如何使用mysaldb插入mysql表,其中表名是python变量?

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错误.当我真正使用表名时,它工作正常.我怎么能绕过这个?

Hen*_*nry 6

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)