首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

我可以在SQLAlchemy中创建TEMPORARY TABLE而无需附加到Table._prefixes吗?

在SQLAlchemy中,可以在不附加到Table._prefixes的情况下创建TEMPORARY TABLE。以下是一个简单的示例:

代码语言:python
代码运行次数:0
复制
from sqlalchemy import create_engine, Table, Column, Integer, String, MetaData, select

# 创建一个内存中的临时表
metadata = MetaData()
temp_table = Table(
    'temp_table',
    metadata,
    Column('id', Integer, primary_key=True),
    Column('name', String),
    prefixes=['TEMPORARY']
)

# 创建一个持久化表
persistent_table = Table(
    'persistent_table',
    metadata,
    Column('id', Integer, primary_key=True),
    Column('name', String)
)

# 创建一个引擎
engine = create_engine('sqlite:///:memory:')

# 创建表
metadata.create_all(engine)

# 插入数据
with engine.begin() as conn:
    conn.execute(temp_table.insert(), [{'id': 1, 'name': 'John'}])
    conn.execute(persistent_table.insert(), [{'id': 1, 'name': 'John'}])

# 查询数据
with engine.begin() as conn:
    result = conn.execute(select([temp_table]))
    print("Temporary table data:")
    for row in result:
        print(row)

    result = conn.execute(select([persistent_table]))
    print("Persistent table data:")
    for row in result:
        print(row)

在这个示例中,我们创建了一个名为temp_table的临时表,并将其添加到metadata对象中。然后,我们创建了一个名为persistent_table的持久化表,并将其添加到metadata对象中。最后,我们使用create_all()方法创建了这两个表。

在插入数据时,我们使用execute()方法将数据插入到两个表中。最后,我们使用execute()方法查询两个表中的数据,并将结果打印到控制台上。

需要注意的是,临时表只在当前会话中可见,当会话结束时,临时表将被自动删除。因此,如果您希望在多个会话中使用临时表,则需要在每个会话中重新创建它。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的合辑

领券