rks*_*ksh 11 python mysql postgresql sqlalchemy
我想使用 SQLAlchemy 在 postgresql 中插入后获取最后插入记录的 ID。这是代码,
insert_record = {list of data}
result = connection.execute(tbl_example.insert().returning(tbl_example.c.id), insert_record)
print result.id
Run Code Online (Sandbox Code Playgroud)
插入效果很好,但我似乎无法获取最后插入的 ID,出现以下错误,
AttributeError:“ResultProxy”对象没有属性“id”
返回ID位于返回对象中的什么位置?
Sha*_*hP 10
它直接位于返回对象中。文档中有示例:
stmt = table.update().\
where(table.c.data == 'value').\
values(status='X').\
returning(table.c.server_flag,
table.c.updated_timestamp)
for server_flag, updated_timestamp in connection.execute(stmt):
print(server_flag, updated_timestamp)
Run Code Online (Sandbox Code Playgroud)
此外,ResultProxy
支持通过位置(如示例)和通过名称访问。因此,您可以使用类似row_id = row['id']
以下内容:
for row in connection.execute(stmt):
row_id = row['id']
row_id = row.id
row_id = row[0]
print(row_id)
Run Code Online (Sandbox Code Playgroud)
请注意,并非所有数据库后端都支持此功能。从文档中:
请注意,并非所有数据库/DBAPI 都支持 RETURNING。对于那些不支持的后端,编译和/或执行时会引发异常。
归档时间: |
|
查看次数: |
21821 次 |
最近记录: |