I'm using python-mysql db api to insert some values to a table where the table name is in a python variable. So I wrote the below code
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))
As you see the table name is in the hosts_table variable. The problem is mysqldb quotes the table name and i get a mysql error. It works fine when I literally use the table name. How can I get around this?
Note that the hosts_table variable is a single % sign, and all the other variables are two %% so they are ignored in the initial Python string interpolation, then change to a single % for the mysqldb part.
Try this in the Python prompt to see what I mean:
MySQLdb does not care a bit about the names of your variables. If you are having a problem with the table name, try to assign
hosts_table
to the name of your table, and see if it'll work.hosts_table = 'hosts_table'
Or just
print
it out and see what table name it's using:print hosts_table
Try something like that:
I'm not sure it will work but it could :)