我想在mytable
(在DB2数据库中)中插入记录,并获取该插入中生成的id
。我正试图用python 2.7
做到这一点。这是我做的:
import sqlalchemy
from sqlalchemy import *
import ibm_db_sa
db2 = sqlalchemy.create_engine('ibm_db_sa://user:pswd@localhost:50001/mydatabase')
sql = "select REPORT_ID from FINAL TABLE(insert into MY_TABLE values(DEFAULT,CURRENT TIMESTAMP,EMPTY_BLOB(),10,'success'));"
result = db2.execute(sql)
for item in result:
id = item[0]
print id
当我执行上面的代码时,它给出了我的输出:
10 //or a increasing number
现在,当我在数据库中检查时,没有插入任何内容!我试图在命令行上运行相同的SQL请求,它工作得很好。任何线索为什么我不能使用sqlalchemy
使用python插入它?
答案 0 :(得分:2)
你试过提交吗? @Lennart是对的。它可能会解决您的问题。
您的代码不会提交您所做的更改,因此会回滚。 如果您的数据库是InnoDB,那么它是事务性的,因此需要提交。
根据this,您还必须连接到您的引擎。所以在你的实例中它看起来像:
db2 = sqlalchemy.create_engine('ibm_db_sa://user:pswd@localhost:50001/mydatabase')
conn = db2.connect()
trans = conn.begin()
try:
sql = "select REPORT_ID from FINAL TABLE(insert into MY_TABLE values(DEFAULT,CURRENT TIMESTAMP,EMPTY_BLOB(),10,'success'));"
result = conn.execute(sql)
for item in result:
id = item[0]
print id
trans.commit()
except:
trans.rollback()
raise
我希望这会有所帮助。