栏目分类:
子分类:
返回
文库吧用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
文库吧 > IT > 面试经验 > 面试问答

使用sqlalchemy orm从查询创建临时表

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用sqlalchemy orm从查询创建临时表

它不完全是ORM,但为了最初创建表,我将克隆表结构(请参见

cloneTable
下面的示例)。为了复制数据,我将使用InsertFromSelect示例。

编辑: 自版本0.8.3起,SqlAlchemy支持
开箱即用的Insert.from_select()
。因此,下面的示例中的InsertFromSelect类和相应的访问者可以直接替换,不再需要。由于历史原因,我保留了原始示例。

这是一个有效的例子

from sqlalchemy import Tablefrom sqlalchemy.ext.compiler import compilesfrom sqlalchemy.sql.expression import Updatebaseclass InsertFromSelect(Updatebase):    def __init__(self, table, select):        self.table = table        self.select = select@compiles(InsertFromSelect)def visit_insert_from_select(element, compiler, **kw):    return "INSERT INTO %s %s" % (        compiler.process(element.table, asfrom=True),        compiler.process(element.select)    )def cloneTable(name, table, metadata):    cols = [c.copy() for c in table.columns]    constraints = [c.copy() for c in table.constraints]    return Table(name, metadata, *(cols + constraints))# test datafrom sqlalchemy import metaData, Column, Integerfrom sqlalchemy.engine import create_enginee = create_engine('sqlite://')m = metaData(e)t = Table('t', m, Column('id', Integer, primary_key=True),          Column('number', Integer))t.create()e.execute(t.insert().values(id=1, number=3))e.execute(t.insert().values(id=9, number=-3))# create temp tabletemp = cloneTable('temp', t, m)temp.create()# copy datains = InsertFromSelect(temp, t.select().where(t.c.id>5))e.execute(ins)# print resultfor r in e.execute(temp.select()):    print(r)


转载请注明:文章转载自 www.wk8.com.cn
本文地址:https://www.wk8.com.cn/it/640278.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 wk8.com.cn

ICP备案号:晋ICP备2021003244-6号