Sye*_*b M 9 python orm sqlalchemy python-2.7
是否可以创建用于会话的视图类?
v = Table('viewname', metadata, autoload=True)
class ViewName(object):
def __init__(self, name):
self.name = name
mapper(ViewName, v)
Run Code Online (Sandbox Code Playgroud)
Sye*_*b M 15
最后我发现了它.
我们可以为sql视图创建类.这是一个简单的例子.
class ViewName(Base):
__table__ = Table('viewname', Base.metadata,
Column('id', Integer, primary_key=True),
Column('foreign_key', Integer, ForeignKey('sometablename.id'),
autoload=True, autoload_with=engine
)
Run Code Online (Sandbox Code Playgroud)
而已.我们可以使用ViewName类访问"viewname"表.
感谢所有回复我的人.
ste*_*han 11
您可以执行此操作,但必须手动定义主键.假设这id
是一个v
您想要用作主键的列(就像我原来的示例代码中的情况一样),这可以工作:
from sqlalchemy import orm
class ViewName(object):
def __init__(self, name):
self.name = name
orm.mapper(ViewName, v, primary_key=[v.c.id])
Session = orm.sessionmaker(bind=engine)
for r in Session().query(ViewName):
print r.id, r.number
Run Code Online (Sandbox Code Playgroud)
要对此进行测试,请在上面链接的答案中将此代码段粘贴到我的工作示例的末尾.有关更多详细信息,请参阅文档(例如,您可以使用属性来定义外键).
编辑(在上面链接的评论的评论中):或者,您可以稍微更改我原始代码(和您的问题)中的视图定义并写入:
v = Table('viewname', metadata, Column('id', Integer, primary_key=True), autoload=True)
Run Code Online (Sandbox Code Playgroud)
即,已经在表定义中添加主键.然后你不需要在你的问题中的primary_key
参数orm.mapper
,你的问题中的其余代码开箱即用.
归档时间: |
|
查看次数: |
8324 次 |
最近记录: |