【问题标题】:mariadb cursor parameter marker issuemariadb 游标参数标记问题
【发布时间】:2019-08-03 00:01:44
【问题描述】:

我正在尝试使用 python 执行一个简单的 mariadb sql 查询,但收到以下错误:

1064 (42000):您的 SQL 语法有错误;检查手册 对应于正确语法的 MariaDB 服务器版本 在第 1 行的“%s”附近使用

我是 python 新手,我不知道我做错了什么。我认为 sql 是有效的,因为我尝试过,并且之前也使用过相同的语法。

这是无效的代码:

import mysql.connector as mariadb

mariadb_connection = mariadb.connect()

cursor = mariadb_connection.cursor()

cursor.execute(operation="select max(parse_key) from nb.extracted_data where run_id = %s",params=(run_id))

我检查了 mysql 文档,我认为我这样做是正确的:

https://dev.mysql.com/doc/connector-python/en/connector-python-example-cursor-select.html

请帮我弄清楚我必须做些什么来纠正这个陈述。

【问题讨论】:

  • 请去掉 params= 并重试
  • 我原来就是这样。我摆脱了两个参数名称,但它仍然不起作用: cursor.execute("SELECT max(parse_key) FROM nb.extracted_data WHERE run_id=%s",(run_id))
  • 在 run_id 和右括号之间加一个逗号,如下所示:(run_id,)。在 Python 中,只有一个元素的元组很有趣。或者(我不确定它会起作用),而是在参数周围使用方括号。
  • 做到了!我什至尝试将它转换为一个元组,但没有奏效。感谢@brentertainer

标签: python mysql python-3.x mariadb


【解决方案1】:

看起来@brentertainer 想通了。元组在 run_id 之后需要一个逗号,即 (run_id**,**)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 2020-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-30
    相关资源
    最近更新 更多