select 从插入到不使用 sqlalchemy

select from insert into not working with sqlalchemy

我想在 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 吗?

您尝试提交了吗? @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

希望对您有所帮助。