Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使sqlalchemy在提交时不删除(或截断)临时表_Python_Sql_Postgresql_Sqlalchemy - Fatal编程技术网

Python 使sqlalchemy在提交时不删除(或截断)临时表

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'])

我正在尝试创建一个临时表,然后在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'])

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来实现这一点?