MySQL 连接器/Python - 将 python 变量插入 MySQL 表
Posted
技术标签:
【中文标题】MySQL 连接器/Python - 将 python 变量插入 MySQL 表【英文标题】:MySQL Connector/Python - insert python variable to MySQL table 【发布时间】:2013-06-07 20:28:46 【问题描述】:我正在尝试将 python 变量插入到 python 脚本中的 mysql 表中,但它不起作用。这是我的代码
add_results=("INSERT INTO account_cancel_predictions"
"(account_id,21_day_probability,flagged)"
"Values(%(account_id)s,%(21_day_probability)s,%(flagged)s)")
data_result=
'account_id':result[1,0],
'21_day_probability':result[1,1],
'flagged':result[1,2]
cursor.execute(add_results,data_result)
cnx.commit()
cursor.close()
cnx.close()
这会出错
ProgrammingError: Failed processing pyformat-parameters; 'MySQLConverter' object has no attribute '_float64_to_mysql'
但是,当我将变量名称 result[1,0]
、result[1,1]
和 result[1,2]
替换为它们的实际数值时,它确实有效。我怀疑 python 传递的是实际的变量名,而不是它们持有的值。我该如何解决这个问题?
【问题讨论】:
connection = engine.connect() connection.execute(""" update Players set Gold =(?) where Name=(?)""",(gold,name)) ,也许只是一个fanboy 的事情,但我倾向于将 sqlalchemy 与 python 一起使用,这往往会简化大部分内容,而且我从来没有遇到过使用通配符的问题 【参考方案1】:假设你使用mysql.connector
(我想你是),定义你自己的转换器类:
class NumpyMySQLConverter(mysql.connector.conversion.MySQLConverter):
""" A mysql.connector Converter that handles Numpy types """
def _float32_to_mysql(self, value):
return float(value)
def _float64_to_mysql(self, value):
return float(value)
def _int32_to_mysql(self, value):
return int(value)
def _int64_to_mysql(self, value):
return int(value)
config =
'user' : 'user',
'host' : 'localhost',
'password': 'xxx',
'database': 'db1'
conn = mysql.connector.connect(**config)
conn.set_converter_class(NumpyMySQLConverter)
【讨论】:
不错的解决方案!但是,我必须包含一个__init__
函数才能使其工作。可能是因为我的版本。我在conversion.py
中使用了类似于原始MySQLConverter
类的东西。
这段代码放在哪里?在 Jupyter 笔记本中,在 mysql-connector 库中……?一般来说,我对 mysql-connector 或 OOP 不太熟悉。同样,__init__
会去哪里?另见:***.com/questions/25093950/…【参考方案2】:
您传递的其中一个值可能是 MySQL 连接器无法识别的 numpy.float64
类型。在填充字典时将其转换为真正的 python float
。
【讨论】:
【参考方案3】:如果您使用的是 python 3 及更高版本,只需使用 mysqlclient pip install mysqlclient
。 django推荐的,其他驱动都不好。
【讨论】:
以上是关于MySQL 连接器/Python - 将 python 变量插入 MySQL 表的主要内容,如果未能解决你的问题,请参考以下文章
_mysql.c(42) : fatal error C1083: Cannot open include file: 'config-win.h':问题的解决 mysql安装pyth