tmn*_*tmn 1 python sqlite sqlalchemy
我在 Sqlalchemy 中处理纯文本 SQL。我宁愿不使用 ORM,除非这是唯一的方法,但是有没有一种方法可以在我执行 INSERT 时为新记录返回生成的主键值?Java 的 JDBC 实用程序可以做到这一点,如果没有办法用 SQLAlchemy 做到这一点,我会感到有点惊讶......
from sqlalchemy import create_engine, text
engine = create_engine('sqlite:///rexon_metals.db')
conn = engine.connect()
# I want this to return the generated primary key values
def insert_new_customer(customer_name, region, street_address, city, state, zip_code):
stmt = text("INSERT INTO CUSTOMER (NAME, REGION, STREET_ADDRESS, CITY, STATE, ZIP) VALUES ("
":customer_name, :region, :street_address, :city, :state, :zip_code)")
return conn.execute(stmt, customer_name=customer_name, region=region, street_address=street_address, city=city, state=state, zip_code=zip_code)
Run Code Online (Sandbox Code Playgroud)
可能是因为接受答案已经一年多了,答案并没有解决问题。所以,我深入研究了sqlalchemy的文档,发现了.inserted_primary_key。它使用该命令返回单个插入行的主键的元组connection.execute()。
编辑:使用.inserted_primary_key而不是.lastrowid 的另一个原因:
.lastrowid是特定于数据库的,它可能适用于某些数据库而不适用于其他数据库。但是.inserted_primary_key无论底层数据库如何,都将始终有效。
您可以从以下位置获取.lastrowid:
result = insert_new_customer(...)
result.lastrowid
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4486 次 |
| 最近记录: |