GeraJet
@GeraJet
Anykey

Как правильно составить sql-запрос с параметрами?

date = '31/01/2015'
date_format = '%%d/%%m/%%Y'

Запрос:
rows = db.session.execute("SELECT * FROM weather WHERE DATE_FORMAT(putdate, %s) = %s", (date_format, date))

Выдает ошибку:
AttributeError: 'tuple' object has no attribute 'keys'
  • Вопрос задан
  • 2662 просмотра
Решения вопроса 1
@pcdesign
Я попробовал у себя
date = '31/01/2015'
date_format = '%d/%m/%Y'
g.cur.execute("""SELECT * FROM `per` WHERE DATE_FORMAT(`date_sf`, %s) = %s""",
                    (date_format, date))
rows = g.cur.fetchall()
print(rows)

Так работает.
Ну и еще применительно к алхимии.
Вот так работает:
date = '01/01/2015'                                                           
date_format = '%d/%m/%Y'                                                      
sql = """SELECT * FROM `users` WHERE DATE_FORMAT(`date`, '%s') = '%s' """ % (date_format, date)                                                       
rows = db.session.execute(sql)


И есть вот такой еще путь.
Имхо, самый правильный:
from sqlalchemy import text
rows = db.session.execute(text("SELECT * FROM `users` WHERE  DATE_FORMAT(`date`, :df) = :date "), 
{"df": '%d/%m/%Y', "date": '01/01/2015'})
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы