【问题标题】:pymysql not inserting data; but "autoincrement" increasespymysql 没有插入数据;但是“自动增量”会增加
【发布时间】:2015-10-26 01:51:01
【问题描述】:

这是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)

【问题讨论】:

    标签: python mysql pymysql


    【解决方案1】:

    我想我明白了。 我将在此处添加信息以防其他人遇到此问题:

    我需要在脚本中添加conn.commit()

    【讨论】:

      【解决方案2】:

      你可以使用

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

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

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

      【讨论】:

      • 感谢您发现 vals 问题。但我没有例外,也没有插入......
      猜你喜欢
      • 2012-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多