Python MySQL Ошибка программирования запроса параметров: 1064 (42000) - PullRequest
0 голосов
/ 12 марта 2020

Я хочу запросить MySQL таблицы, используя программу python, но я получил эту ошибку:

ProgrammingError: 1064 (42000): у вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей MySQL серверной версии, на предмет правильного синтаксиса для использования рядом с '' 10 'OFFSET' 0 '' в строке 1

Смущает то, что когда я не Если использовать переменные, запрос выполняется отлично, как показано ниже:

cur = connection.cursor()
query = "SELECT * FROM DB.Table LIMIT 10 OFFSET 0"

cur.execute(query)

records = cur.fetchall()

for record in records:
    print(record)

Но мне нужно выбрать пакет данных по пакету, и я должен выполнить вышеуказанную команду в a для l oop. И мне нужно определить переменные. Но я получил ошибку 1064. Вот код с ошибкой:

i = 0
p = str(i)
j = 10
q = str(j)

cur = connection.cursor()
query = "SELECT * FROM DB.Table LIMIT %s OFFSET %s"

cur.execute(query,(q,p,))

records = cur.fetchall()

for record in records:
    print(record)

Я ценю вашу помощь.

Ответы [ 2 ]

1 голос
/ 12 марта 2020

Проще не преобразовывать параметризованные значения в строку, так как ошибка показывает одинарные кавычки:

i = 0
j = 10

cur = connection.cursor()
query = "SELECT * FROM DB.Table LIMIT %s OFFSET %s"

cur.execute(query, (j, i))
1 голос
/ 12 марта 2020

Вы можете использовать cur.execute(query % (q,p)) или

query = "SELECT * FROM DB.Table LIMIT {} OFFSET {}"
cur.execute(query.format(q, p))
...