gpt4 book ai didi

python - 用变量替换表名。使用 python 和 mysql 连接器

转载 作者:行者123 更新时间:2023-11-29 03:56:17 26 4
gpt4 key购买 nike

我想动态更改插入数据的表的变量名。

这目前有效,

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

这让我相信我不能这样做,所以我想问一下我该怎么做才能最终在表中传递一个变量名,而不必每次都对其进行硬编码。

最佳答案

显示 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")

关于python - 用变量替换表名。使用 python 和 mysql 连接器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26324996/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com