pymysql没有插入数据;但“自动增量”增加

时间:2015-10-26 01:51:01

标签: python mysql pymysql

这是https://stackoverflow.com/questions/33336963/use-a-python-dictionary-to-insert-into-mysql/33337128#33337128的后续行动。

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)

2 个答案:

答案 0 :(得分:3)

想想我弄清楚了。 我会在这里添加信息以防其他人遇到这个问题:

我需要将conn.commit()添加到脚本

答案 1 :(得分:1)

您可以使用

 try:
     cur.execute(sql)
 except Exception, e:
     print e

如果您的代码错误,则异常可以告诉您。 它有另一个问题。 cols和vals不匹配。 值应为

vals = [dict[col] for col in  cols]