query = "SELECT * FROM mytable WHERE time=%s", (mytime)
В настоящее время я это делаю, но хочу разбить его на 2 строки (так что я могу делать их отдельно)
cursor.execute("SELECT * FROM mytable WHERE time=%s",(mytime))
Затем я хочу добавить к нему ограничение% s. Как я могу это сделать, не впутывая% s в мое время?
Изменить: я хочу выполнить запрос2, который имеет "LIMIT% s,% s"
Опасаясь внедрения SQL, вы можете динамически составить свой запрос как предлагает Ignacio.
>>> qry = 'SELECT t.mycol FROM mytable t WHERE t.mycol = %%s %s' % 'LIMIT %s,%s'
Вы спрашиваете:
Как я могу это сделать, не испортив % s в мое время?
Обратите внимание, что вы избежите первого %s
с дополнительным %
.
Это дает вам эту строку (что, конечно, выглядит прекрасно, насколько это касается DB-API):
>>> qry
'SELECT * FROM mytable t WHERE t.mycol = %s LIMIT %s,%s'
Затем передайте эту строку и ваши параметры методу execute()
:
curs.execute(qry, (mytime,1,2,))
НТН
cxn.execute("SELECT * FROM mytable WHERE time=%%s LIMIT %d" % (mylimit,), mytime)
Или:
cxn.execute("SELECT * FROM mytable WHERE time=%s" + (" LIMIT %d" % (mylimit,)), mytime)