所以我正在尝试在我的mySQL数据库中添加一个新条目。这里的问题是,它增加了id,但确实添加了条目。经过一番谷歌搜索,我发现失败的INSERT
查询也会增加AUTO_INCREMENT
d值(在我的情况下id
(。
mySQL 表是使用 CREATE TABLE IF NOT EXISTS TS3_STAMM_1 (id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, name VARCHAR(64) NOT NULL, ts3_uid VARCHAR(64) NOT NULL, points INT(8) UNSIGNED NOT NULL);
由 python MySQLdb
模块中的函数qServer.execute(querystring)
调用。
然后我使用qString = "INSERT INTO TS3_STAMM_1 (name, ts3_uid, points) VALUES ('{}', '{}', {})".format(name, uid, pnts)
(数据类型是正确的,我至少进行了四重检查(和函数qServer.exectue(qString)
将新条目插入到数据库中。
但它正在递增 ID,但不添加条目。所以我的猜测是这是一个失败的查询,但为什么呢?它是如何发生的?如何解决?
简单的SELECT
查询以相同的方式工作正常,手动添加数据也可以正常工作。只有 python 查询失败。
注意:qServer
是与服务器的连接,其定义如下:
try:
qConn = MySQLdb.connect(host="...", user="...", passwd="...", db="...")
qServer = qConn.cursor()
except OperationalError:
print("Cannot connect to mySQL Database! Aborting...")
exit(1)
使用 commit Luke。
>>> cursor.execute("INSERT INTO employees (first_name) VALUES (%s)", ('Jane', ))
>>> qConn.commit()
使用 str.format
创建 SQL 查询是一个坏主意。