python – 可以在SqlAlchemy中使用mapper對映檢視嗎?

As Mentioned here I created View.

是否可以建立用於會話的檢視類?

v = Table('viewname', metadata, autoload=True)

class ViewName(object):
    def __init__(self, name):
       self.name = name

mapper(ViewName, v)
您可以執行此操作,但必須手動定義主鍵.假設id是要用作主鍵的v列(如我的 original example code

中的情況),這可以:

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

要對此進行測試,請在上面連結的答案中將此程式碼段貼上到我的工作示例的末尾.有關更多詳細資訊,請參閱 the documentation (例如,您可以使用屬性來定義外來鍵).

編輯(麵包車在 comment 到我上面的答案):

或者,您可以稍微更改原始程式碼(和您的問題)中的檢視定義並寫入:

v = Table('viewname', metadata, Column('id', Integer, primary_key=True), autoload=True)

即,已經在表定義中新增主鍵.然後你不需要orm.mapper中的primary_key引數,你問題中的其餘程式碼就可以開箱即用.

翻譯自:https://stackoverflow.com/questions/20518521/is-possible-to-mapping-view-with-class-using-mapper-in-sqlalchemy