我目前仍然坚持使用我编写的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命令的提示可能会有所帮助。
非常感谢提前!
问候,托马斯
答案 0 :(得分:0)
我想我可以自己回答。
我只是试图在没有准备的情况下运行相同的声明,它的工作就像一个魅力。 :)
所以,解决方案是:
>>> Fraction(2/3)
Fraction(6004799503160661, 9007199254740992)
>>> Fraction(2, 3)
Fraction(2, 3)