vim*_*vim 4 python mysql-python
我正在使用python-mysql db api将一些值插入到表名为python变量的表中.所以我写了下面的代码
DB_CURSOR.execute("""INSERT INTO %s (name,created_by,state,description,docs,admin_email,date_created) VALUES(%s,%s,%s,%s,%s,%s,%s)""", (hosts_table, hostname, created_by, state, description, docroot, admin_email, date_created))
Run Code Online (Sandbox Code Playgroud)
如您所见,表名在hosts_table变量中.问题是mysqldb引用了表名,我得到了一个mysql错误.当我真正使用表名时,它工作正常.我怎么能绕过这个?
DB_CURSOR.execute("""INSERT INTO %s
(name,created_by,state,description,docs,admin_email,date_created)
VALUES(%%s,%%s,%%s,%%s,%%s,%%s,%%s)""" % hosts_table,
(hostname, created_by, state, description, docroot, admin_email, date_created))
Run Code Online (Sandbox Code Playgroud)
请注意,hosts_table变量是单个%符号,所有其他变量都是2 %%,因此在初始Python字符串插值中会忽略它们,然后将mysqldb部分更改为单个%.
在Python提示符中尝试这个,看看我的意思:
>>> '%%s %s' % 'x'
'%s x'
Run Code Online (Sandbox Code Playgroud)