Python | MySQLdb - >我不能插入

时间:2012-03-07 12:57:31

标签: python database insert mysql-python

我有一个奇怪的问题。 有两个数据库。其中有一个产品用于在线商店。另一个上面有网上商店软件,只有活跃的产品。

我想从db1中获取值,在python中更改一些值并插入到db2中。

db1.execute("SELECT * FROM table1")
for product in db1.fetchall():
    # ...
    db2.execute("INSERT INTO table2 ...")
    print "Check: " + str(db2.countrow)

所以我可以通过select获取值,即使从db2中选择也没问题。我的检查总是给我1但是table2中没有新的行。自动增量值增加但没有数据。 我甚至没有得到像“无法插入”这样的错误 那么有人知道可能出现什么问题吗? (如果我通过phpmyadmin手动插入它可以工作......如果我只是从我的脚本中取sql并手动执行sql-statements工作以及)

编辑:在How do I check if an insert was successful with MySQLdb in Python?

找到答案

有没有办法在不提交的情况下进行这些执行? 我有一个围绕mysqldb的包装器,它对我来说非常有效,通过提交改变行为我需要进行一些重大更改。

EDIT2:好吧我发现db1是MyISAM(没有提交就可以工作)而db2是InnoDB(实际上似乎只能用于提交)我想我必须将db2更改为MyISAM。

1 个答案:

答案 0 :(得分:5)

如果您使用的是InnoDB,请尝试在插入后添加db2.commit()

  

从1.2.0开始,MySQLdb默认禁用自动提交,如   DB-API标准(PEP-249)要求。如果您使用的是InnoDB   表格或某些其他类型的事务表类型,您需要   在关闭连接之前执行connection.commit(),否则不执行任何操作   您的更改将写入数据库。

http://mysql-python.sourceforge.net/FAQ.html#my-data-disappeared-or-won-t-go-away