Python 使sqlalchemy在提交时不删除(或截断)临时表
我正在尝试创建一个临时表,然后在postgres中使用sqlalchemy。我想创建带有“临时”前缀的表my_table,然后将其提交到数据库,以便在同一会话中再次使用它Python 使sqlalchemy在提交时不删除(或截断)临时表,python,sql,postgresql,sqlalchemy,Python,Sql,Postgresql,Sqlalchemy,我正在尝试创建一个临时表,然后在postgres中使用sqlalchemy。我想创建带有“临时”前缀的表my_table,然后将其提交到数据库,以便在同一会话中再次使用它 from sqlalchemy import Column, Integer, Table my_table = Table('my_temp_table', metadata, Column('id', Integer, primary_key=True), prefixes=['TEMPORARY'])
from sqlalchemy import Column, Integer, Table
my_table = Table('my_temp_table', metadata,
Column('id', Integer, primary_key=True),
prefixes=['TEMPORARY'])
my_table.create(session.bind)
session.commit() # required to access the table
但是当我在同一个会话中查询该表时
session.query(my_table).filter(my_table.id == 2).all()
该表已不存在
我知道在创建临时表时可以设置“ON COMMIT”选项,当设置为“PRESERVE ROWS”时,不应该删除(或截断)表
默认情况下,提交时应设置为在postgres中保留行,但仍会删除该表
在sqlalchemy中有没有一种方法可以创建一个临时表,并将oncommit设置为保留行 尝试使用参数创建表,该参数是Postgresql方言特有的构造。i、 e:
my_table = Table('my_temp_table', metadata,
Column('id', Integer, primary_key=True),
prefixes=['TEMPORARY'],
postgresql_on_commit='PRESERVE ROWS')
但是,仔细查看my\u table.create()
调用,我认为您正在尝试通过session.get\u bind()
而不是session.bind
致以最诚挚的问候。尝试使用参数,该参数是用于创建表的Postgresql方言特定结构。i、 e:
my_table = Table('my_temp_table', metadata,
Column('id', Integer, primary_key=True),
prefixes=['TEMPORARY'],
postgresql_on_commit='PRESERVE ROWS')
但是,仔细查看my\u table.create()
调用,我认为您正在尝试通过session.get\u bind()
而不是session.bind
致以最诚挚的问候。谢谢!如果我们使用1.0就好了!还有什么方法可以用0.9.9来实现吗?谢谢!如果我们使用1.0就好了!还有什么方法仍然使用0.9.9来实现这一点?