我想使用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)
感谢您的帮助。
答案 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))