pymysql:如何格式化查询类型?
pymysql: How to format types on query?
我正在尝试使用 pymysql (Python 3) 在 MySQL table 上插入行,相关代码如下。
def saveLogs(DbConnection, tableName, results):
for row in results:
formatStrings = ",".join(["?"]*len(row))
sql = "INSERT INTO %s VALUES (%s);"%(tableName,formatStrings)
DbConnection.cursor().execute(sql, tuple(row))
DbConnection.commit()
我使用 "?"
作为类型,但出现错误 not all arguments converted during string formatting
。 row
是由string
、int
和datetime.datetime
组成的列表。我想问题是 "?"
但我已经检查了 PEP 249,但我仍然不清楚我应该怎么做。有什么建议吗?
仅对 table 名称使用字符串格式(但请确保您信任来源或进行了适当的验证)。对于其他所有内容,请使用 查询参数 :
def saveLogs(DbConnection, tableName, results):
cursor = DbConnection.cursor()
sql = "INSERT INTO {0} VALUES (%s, %s, %s)".format(tableName)
for row in results:
cursor.execute(sql, row)
DbConnection.commit()
还有那个executemany()
method:
def saveLogs(DbConnection, tableName, results):
cursor = DbConnection.cursor()
cursor.executemany("INSERT INTO {0} VALUES (%s, %s, %s)".format(tableName), results)
DbConnection.commit()
我正在尝试使用 pymysql (Python 3) 在 MySQL table 上插入行,相关代码如下。
def saveLogs(DbConnection, tableName, results):
for row in results:
formatStrings = ",".join(["?"]*len(row))
sql = "INSERT INTO %s VALUES (%s);"%(tableName,formatStrings)
DbConnection.cursor().execute(sql, tuple(row))
DbConnection.commit()
我使用 "?"
作为类型,但出现错误 not all arguments converted during string formatting
。 row
是由string
、int
和datetime.datetime
组成的列表。我想问题是 "?"
但我已经检查了 PEP 249,但我仍然不清楚我应该怎么做。有什么建议吗?
仅对 table 名称使用字符串格式(但请确保您信任来源或进行了适当的验证)。对于其他所有内容,请使用 查询参数 :
def saveLogs(DbConnection, tableName, results):
cursor = DbConnection.cursor()
sql = "INSERT INTO {0} VALUES (%s, %s, %s)".format(tableName)
for row in results:
cursor.execute(sql, row)
DbConnection.commit()
还有那个executemany()
method:
def saveLogs(DbConnection, tableName, results):
cursor = DbConnection.cursor()
cursor.executemany("INSERT INTO {0} VALUES (%s, %s, %s)".format(tableName), results)
DbConnection.commit()