Как связать строку в Python

1
query = "SELECT * FROM mytable WHERE time=%s", (mytime)

В настоящее время я это делаю, но хочу разбить его на 2 строки (так что я могу делать их отдельно)

cursor.execute("SELECT * FROM mytable WHERE time=%s",(mytime))

Затем я хочу добавить к нему ограничение% s. Как я могу это сделать, не впутывая% s в мое время?

Изменить: я хочу выполнить запрос2, который имеет "LIMIT% s,% s"

  • 0
    Можете ли вы также опубликовать код, который вы используете для выполнения запроса?
  • 9
    Я люблю инъекции SQL.
Показать ещё 2 комментария
Теги:

2 ответа

3

Опасаясь внедрения 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,))

НТН

1
cxn.execute("SELECT * FROM mytable WHERE time=%%s LIMIT %d" % (mylimit,), mytime)

Или:

cxn.execute("SELECT * FROM mytable WHERE time=%s" + (" LIMIT %d" % (mylimit,)), mytime)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню