我现在被我写的python脚本困住了。我试着尽可能地编写它,以便将它用于其他项目和集成。因此,我正在构建一个按需更新语句,其结果如下:
import mysql.connector as mariadb
conn = mariadb.connect(host='localhost', user='***', password='***', database='***', port=3306)
cursor=conn.cursor(prepared=True)
sqlcmd = "UPDATE aix_resourcegroups SET aix_rg_current_host=%(current_node)s, aix_rg_dns=%(dns)s, aix_rg_cluster=%(cluster_name)s, aix_rg_ip=%(ip)s, aix_rg_label=%(label)s WHERE aix_rg_name=%(resourcegroup)s"
data={'cluster_name': 'mycluster', 'resourcegroup': 'ZUPSOAP', 'label': 'myrg', 'current_node': 'nodename', 'ip': '1.2.3.4', 'dns': 'myhost.anywhere.net'}
cursor.execute(sqlcmd, data)
错误是:
ERROR: 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '%(current_node)s, aix_rg_dns=%(dns)s, aix_rg_cluster=%(cluster_name)s, aix_rg_ip' at line 1
我以为用 $(key)s
可能会使用字典索引并用给定字典中元组键的值替换元组的值。
它在使用前是有效的 ?
(问号)代替 %(name)s
,但由于我必须控制要更新的值的顺序(我的表中曾经有过垃圾),所以我认为切换到命名值(或者以任何方式调用)可能是个好主意。
不过,有什么提示可以帮我完成吗?另外,关于如何通过游标获得完整执行的sql命令的提示可能会有所帮助。
非常感谢!
你好,托马斯
1条答案
按热度按时间nafvub8i1#
我想我可以自己回答这个问题。
我只是试着在没有准备的情况下运行相同的语句,它就像一个魔咒
因此,解决方案是: