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
希望对您有所帮助。
我想在 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
希望对您有所帮助。