gpt4 book ai didi

python - 无法在 Python 中使用 MySQL 将值插入表中

转载 作者:行者123 更新时间:2023-11-29 18:25:47 25 4
gpt4 key购买 nike

我想使用在 MySQL 数据库中的 python 脚本中创建的一些值来更新表。这是有问题的行:

dbCursor.execute("INSERT INTO Solution (ProblemName, TourLength, Date, Author, Algorithm, RunningTime, Tour) VALUES ('%s', '%d', '%s', '%s', '%s', '%d', '%s')" % (sys.argv[1], bestDist, "Foo Bar", "CURDATE()", "Greedy + 2-Opt", timeAllowed, bestRoute))
dbConnection.commit()

它正在生成此错误:

pymysql.err.InternalError: (1136, "Column count doesn't match value count at row 1")

我尝试在谷歌上搜索该问题并在该网站上搜索解决方案,但我发现的解决方案都与我的不完全匹配。因此,修复程序也没有解决我的问题。所以我不确定此时我能做什么。据我所见,我的所有列名称都与值和格式化变量匹配。

什么可能导致此问题?

CREATE TABLE IF NOT EXISTS Solution (
SolutionID int(11) NOT NULL AUTO_INCREMENT,
ProblemName varchar(32) NOT NULL,
TourLength double NOT NULL,
Date date DEFAULT NULL,
Author varchar(32) DEFAULT NULL,
Algorithm varchar(32) DEFAULT NULL,
RunningTime int(11) DEFAULT NULL,
Tour mediumtext NOT NULL,
CONSTRAINT SPK PRIMARY KEY (SolutionID),
CONSTRAINT SolPName FOREIGN KEY (ProblemName) REFERENCES Problem (Name) ON DELETE CASCADE
);

最佳答案

问题在于使用 % 运算符格式化 SQL 查询。特别是,您需要正确转义参数,并且 CURDATE() 不应该被引用。

也就是说,最好依靠数据库驱动程序来插入查询参数。为此,将它们作为元组传递给 cursor.execute(),如下所示:

sql = (
"INSERT INTO Solution (ProblemName, TourLength, Date, Author, Algorithm, "
" RunningTime, Tour) VALUES (%s, %s, CURDATE(), %s, %s, %s, %s)")
print(sql)
dbCursor.execute(sql, (sys.argv[1], bestDist, "Foo Bar", "Greedy + 2-Opt",
timeAllowed, bestRoute))

关于python - 无法在 Python 中使用 MySQL 将值插入表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46211422/

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