我有一行dict格式的数据。有没有一种简单的方法将其插入到mysql表中。我知道我可以编写一个自定义函数来将dict转换为自定义的sql查询,但我正在寻找更直接的替代方法。
答案 0 :(得分:4)
嗯......根据paramstyle
的文档:
设置为'format'= ANSI C printf格式代码,例如'... WHERE name =%s'。 如果映射对象用于conn.execute(),那么接口 实际上使用'pyformat'= Python扩展格式代码,例如 '... WHERE name =%(name)s'。但是,API目前不允许 paramstyle中多个样式的规范
所以,它应该只是一个问题:
curs.execute("INSERT INTO foo (col1, col2, ...) VALUES (%(key1)s, %(key2)s, ...)", dictionary)
其中key1
,key2
等是字典中的键。
免责声明:我自己没试过:)
编辑:是的,试了一下。它有效。
答案 1 :(得分:2)
MySQLDB没有任何允许直接操作的东西。这是各种答案的常见问题,包括用于此目的的自定义函数。
根据我的经验,最好是在大多数情况下按下并编写参数化的SQL。如果你有很多相同的事情,那么我会考虑将其分解为效用函数。
但是,如果您使用参数手动编写静态SQL,那么大多数安全性和错误相关的问题都会得到解决。当您开始将SQL基于来自where(?)的数据字典时,您需要更加小心。
总之,如果您只是简单地编写查询,使用参数和文档,您的代码可能会更具可读性和可维护性。
(注意:ORM的一些支持者等等......可能不同意......这是基于对我们团队的简单,可靠和工作的大量经验的意见)