我想动态地更改我插入数据的表的变量名。
目前这是可行的,
def dataEntry(subreddit, _title, _post_url, _imageURL):
cnx = mysql.connector.connect(**config)
c = cnx.cursor()
insert = ("""INSERT INTO FoodPorn
(subreddit, title, post_url, imageURL)
VALUES (%s, %s, %s, %s)""")
data_value = (subreddit, _title, _post_url, _imageURL)
c.execute(insert, data_value)
cnx.commit()
c.close()
cnx.close()
dataEntry("fake", "fake", "fake", "fake")但是,当我尝试对表名(在本例中为"FoodPorn“)执行相同的操作时,对于一个动态的表名(如本例中的MachinePorn ),
def dataEntry(subreddit, _title, _post_url, _imageURL):
cnx = mysql.connector.connect(**config)
c = cnx.cursor()
insert = ("""INSERT INTO subredditName
(subreddit, title, post_url, imageURL)
VALUES (%s, %s, %s, %s, %s)""")
data_value = ("MachinePorn", subreddit, _title, _post_url, _imageURL)
c.execute(insert, data_value)
cnx.commit()
c.close()
cnx.close()
dataEntry("fake", "fake", "fake", "fake")我知道这个错误,
mysql.connector.errors.ProgrammingError: 1146 (42S02): Table 'sytykr.subredditname' doesn't exist这让我相信我不能这样做,所以我想问我怎么做,这样我最终可以在表中传递一个变量名,而不是每次都要硬编码。
发布于 2015-02-11 23:55:30
显示mysql连接器的异常告诉您,数据库中不存在该表。
此外,您试图使用'MachinePorn‘作为参数,但是您没有在查询中定义它,而是硬编码的'subredditName’。
我认为您应该将数据库定义为查询中的另一个参数,它将运行良好:
def dataEntry(subreddit, _title, _post_url, _imageURL):
cnx = mysql.connector.connect(**config)
c = cnx.cursor()
insert = cnx.escape_string("INSERT INTO MachinePorn (subreddit, title, post_url, imageURL) VALUES (%s, %s, %s, %s)")
data_value = (subreddit, _title, _post_url, _imageURL)
c.execute(insert, data_value)
cnx.commit()
c.close()
cnx.close()
dataEntry("fake", "fake", "fake", "fake")https://stackoverflow.com/questions/26324996
复制相似问题