Python MySQLdb模块:不调用字符串格式可以插入或更新吗?
Posted
技术标签:
【中文标题】Python MySQLdb模块:不调用字符串格式可以插入或更新吗?【英文标题】:Python MySQLdb module: can you insert or update without calling string format? 【发布时间】:2017-03-24 16:56:00 【问题描述】:对于 Python 模块 mysqldb
,我想插入或更新数据库而不对我的数据(如 int 或 float 或其他)执行 str()
。我有版本 1.2.3。
我四处搜索,查看了许多不同的示例,并检查了 API 文档,我发现的所有用于执行数据库插入或更新的示例都需要从 int 或 float 数据生成字符串,然后调用 cursor.execute()
。
对于 Python 模块 MySQLdb
,您可以在不调用整数或浮点数的字符串格式的情况下插入或更新吗?如果是,如何?
( 顺便说一句,我不喜欢将 python int/float 转换为 str 以进行插入,因为它会消耗 CPU,然后接收 mysql 服务器进程必须执行 str 到 int/float 的转换,这也会再次消耗 CPU。另外对于浮点数,如果您错误地执行字符串表示...您的浮点数可能会失去精度...或者有时会舍入...等等。 )
【问题讨论】:
【参考方案1】:如果您使用 查询参数化,MySQLdb
会在后台自动进行 Python 到数据库的类型转换:
cursor.execute("UPDATE table SET field = %s", (value, ))
注意查询参数是如何在一个元组中单独传递的。而且,您不需要在查询中的占位符周围加上引号 - 驱动程序也会处理它。
【讨论】:
所以value
不会在对cursor.execute()
的调用中转换为字符串?
@TrevorBoydSmith 它不仅可以转换为字符串,还可以根据参数的 Python 类型转换为适当的类型 - mysqldb 会在后台自动计算出来。以上是关于Python MySQLdb模块:不调用字符串格式可以插入或更新吗?的主要内容,如果未能解决你的问题,请参考以下文章
在 Python 中将 MySQLdb 返回从元组转换为字符串