Tah*_*gir 7 postgresql transactions sqlalchemy readonly
在PostgreSQL中,事务访问模式可以更改为READ ONLY(docs).在SQLAlchemy中,可以为引擎更改隔离级别,但不为只读访问模式(docs)提供参数.
如何READ ONLY在连接上制作具有访问模式的引擎?
一种解决方案是对每个事务执行一条语句:
engine = create_engine('postgresql+psycopg2://postgres:pass@127.0.0.1:5432/')
@event.listens_for(engine, 'begin')
def receive_begin(conn):
conn.execute('SET TRANSACTION READ ONLY')
Run Code Online (Sandbox Code Playgroud)
但是最好将模式设置为BEGIN TRANSACTION一行而不是单独的语句。
使用 SQL Alchemy 1.4,可以使用 来设置只读和可延迟模式Connection.execution_options()。
with engine.connect() as conn:
conn = conn.execution_options(
isolation_level="SERIALIZABLE",
postgresql_readonly=True,
postgresql_deferrable=True
)
with conn.begin():
# ... work with transaction
Run Code Online (Sandbox Code Playgroud)
以上是取自https://docs.sqlalchemy.org/en/14/dialects/postgresql.html#postgresql-readonly-deferrable的示例
| 归档时间: |
|
| 查看次数: |
4957 次 |
| 最近记录: |