pymysql 不插入数据;但是 "autoincrement" 增加了
pymysql not inserting data; but "autoincrement" increases
这是 的后续报道。
import pymysql
conn = pymysql.connect(server, user , password, "db")
cur = conn.cursor()
ORFs={'E7': '562', 'E6': '83', 'E1': '865', 'E2': '2756 '}
table="genome"
cols = ORFs.keys()
vals = ORFs.values()
sql = "INSERT INTO %s (%s) VALUES(%s)" % (
table, ",".join(cols), ",".join(vals))
print sql
print ORFs.values()
cur.execute(sql)
cur.close()
conn.close()
感谢小恨,我的程序可以运行(即它不会抛出任何错误),但是当我去检查 mysql 数据库时,没有插入数据。我注意到自动增量 ID 列确实会随着每次失败的尝试而增加。所以这表明我至少正在与数据库联系?
一如既往,非常感谢您的帮助
编辑:我包含了 mysql> show create table genome;
的输出
| genome | CREATE TABLE `genome` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`state` char(255) DEFAULT NULL,
`CG` text,
`E1` char(25) DEFAULT NULL,
`E2` char(25) DEFAULT NULL,
`E6` char(25) DEFAULT NULL,
`E7` char(25) DEFAULT NULL,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=latin1 |
+--------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
您可以使用
try:
cur.execute(sql)
except Exception, e:
print e
如果你的代码有错,异常会告诉你。
它还有另一个问题。
cols 和 vals 不匹配。
值应为
vals = [dict[col] for col in cols]
我想我明白了。
我会在这里添加信息以防其他人遇到这个问题:
我需要在脚本中添加conn.commit()
这是
import pymysql
conn = pymysql.connect(server, user , password, "db")
cur = conn.cursor()
ORFs={'E7': '562', 'E6': '83', 'E1': '865', 'E2': '2756 '}
table="genome"
cols = ORFs.keys()
vals = ORFs.values()
sql = "INSERT INTO %s (%s) VALUES(%s)" % (
table, ",".join(cols), ",".join(vals))
print sql
print ORFs.values()
cur.execute(sql)
cur.close()
conn.close()
感谢小恨,我的程序可以运行(即它不会抛出任何错误),但是当我去检查 mysql 数据库时,没有插入数据。我注意到自动增量 ID 列确实会随着每次失败的尝试而增加。所以这表明我至少正在与数据库联系?
一如既往,非常感谢您的帮助
编辑:我包含了 mysql> show create table genome;
| genome | CREATE TABLE `genome` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`state` char(255) DEFAULT NULL,
`CG` text,
`E1` char(25) DEFAULT NULL,
`E2` char(25) DEFAULT NULL,
`E6` char(25) DEFAULT NULL,
`E7` char(25) DEFAULT NULL,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=latin1 |
+--------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
您可以使用
try:
cur.execute(sql)
except Exception, e:
print e
如果你的代码有错,异常会告诉你。 它还有另一个问题。 cols 和 vals 不匹配。 值应为
vals = [dict[col] for col in cols]
我想我明白了。 我会在这里添加信息以防其他人遇到这个问题:
我需要在脚本中添加conn.commit()