在SQLAlchemy中,可以在不附加到Table._prefixes的情况下创建TEMPORARY TABLE。以下是一个简单的示例:
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()
方法查询两个表中的数据,并将结果打印到控制台上。
需要注意的是,临时表只在当前会话中可见,当会话结束时,临时表将被自动删除。因此,如果您希望在多个会话中使用临时表,则需要在每个会话中重新创建它。
领取专属 10元无门槛券
手把手带您无忧上云