Python MySQL参数查询编程错误:1064(42000)

时间:2020-03-12 17:59:12

标签: python mysql sql limit offset

我想使用python程序查询MySQL表,但出现此错误:

ProgrammingError:1064(42000):您的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册以获取正确的语法,以在第1行的“ 10”偏移“ 0”附近使用

令人困惑的是,当我不使用变量时,查询运行良好,如下所示:

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

cur.execute(query)

records = cur.fetchall()

for record in records:
    print(record)

但是我需要逐批选择数据,并且必须在for循环中执行上述命令。我需要定义变量。但是我收到了错误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 个答案:

答案 0 :(得分:1)

您可以使用cur.execute(query % (q,p))

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

答案 1 :(得分:1)

简单来说,请勿将参数化的值转换为字符串,因为错误会显示单引号:

i = 0
j = 10

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

cur.execute(query, (j, i))