【问题标题】:Qmark in pymysql querypymysql查询中的Qmark
【发布时间】:2014-08-07 08:02:48
【问题描述】:

我是 python 新手,刚从 php5 迁移过来。我阅读了 qmark 参数符号来准备查询,但得到以下信息:

Traceback (most recent call last):
  File "t.py", line 10, in <module>
    cursor.execute("SELECT * FROM object WHERE otype = ?", ["user"])
  File "/usr/local/lib/python3.4/site-packages/pymysql/cursors.py", line 130, in execute
    query = query % self._escape_args(args, conn)
TypeError: not all arguments converted during string formatting

这仅适用于 sqlite 连接器吗?

import sys
import pymysql

try:
    connection = pymysql.connect(host="127.0.0.1", user="root", passwd="pass", db="xxx")
except:
    sys.exit("Database connection error")

cursor = connection.cursor()
cursor.execute("SELECT * FROM object WHERE otype = ?", "user")

for row in cursor:
   print(row)

cursor.close()
connection.close()

【问题讨论】:

    标签: python python-3.x pymysql


    【解决方案1】:

    是的。不幸的是,DB-API 规范让每个实现者来选择参数。 pysqlite 选择了 ?,而 MySQLdb 选择了 %s。由于 pymsql 是 MySQLdb 的直接替代品,因此它也使用 %s。

    【讨论】:

      猜你喜欢
      • 2016-09-02
      • 2015-04-16
      • 1970-01-01
      • 1970-01-01
      • 2019-08-02
      • 1970-01-01
      • 2021-09-22
      • 2012-10-21
      • 2020-02-20
      相关资源
      最近更新 更多