为什么 mySQL Python 查询不插入新条目?
Why does a mySQL Python Query not insert a new entry?
所以我想在我的 mySQL 数据库中添加一个新条目。
这里的问题是,它增加了 id,但确实添加了条目。
经过一些谷歌搜索后,我发现失败的 INSERT
查询也会增加 AUTO_INCREMENT
d 值(在我的例子中是 id
)。
mySQL Table 是使用
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)
使用提交 Luke。
>>> cursor.execute("INSERT INTO employees (first_name) VALUES (%s)", ('Jane', ))
>>> qConn.commit()
使用 str.format
创建 SQL 查询是个坏主意。
所以我想在我的 mySQL 数据库中添加一个新条目。
这里的问题是,它增加了 id,但确实添加了条目。
经过一些谷歌搜索后,我发现失败的 INSERT
查询也会增加 AUTO_INCREMENT
d 值(在我的例子中是 id
)。
mySQL Table 是使用
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)
使用提交 Luke。
>>> cursor.execute("INSERT INTO employees (first_name) VALUES (%s)", ('Jane', ))
>>> qConn.commit()
使用 str.format
创建 SQL 查询是个坏主意。