首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.query属性在sqlacodegen模型中的应用

.query属性在sqlacodegen模型中的应用
EN

Stack Overflow用户
提问于 2015-01-19 11:20:16
回答 1查看 1.7K关注 0票数 3

当我使用sqlacodegen创建models.py时,我不能使用User.query,得到警告"AttributeError:键入对象'User‘没有属性'query'“。我认为db.query是一个非常有用的属性,它在SQLAlchemy()中使用:

代码语言:javascript
复制
db = SQLAlchemy()

但是我需要使用sqlacodegen来为我们系统中现有的表创建模型。创建代码如下:

models.py

代码语言:javascript
复制
# coding: utf-8
from sqlalchemy import Column, Date, Float, Integer, String, Table, text
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()
metadata = Base.metadata

class User(Base):
    __tablename__ = u'users'
    id = Column(Integer, primary_key=True)
    email = Column(String(64))
    username = Column(String(64))
    role_id = Column(Integer)
    password_hash = Column(String(128))

现在我导入models.py:

代码语言:javascript
复制
from models import *
@main.route('/', methods=['GET', 'POST'])
def index():
    form = NameForm()
    if form.validate_on_submit():
        user = User.query.filter_by(username=form.name.data).first()
...

当我运行这个程序时,给出的警告是:

代码语言:javascript
复制
AttributeError: type object 'User' has no attribute 'query'

我想知道如何将类用户(基本)转换为类用户(db.Model)这样的类型,这样它就可以使用.query属性了?或者是否有其他可用的方法来使用类User(Base)类型来实现这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-19 13:33:15

听起来你已经习惯了使用烧瓶-SQLAlchemy,其中包含了允许您提到的功能的秘密调料。

SQLAlchemy上的烧瓶文档指示如何获得相同的功能:

代码语言:javascript
复制
from sqlalchemy import create_engine
from sqlalchemy.orm import scoped_session, sessionmaker
from sqlalchemy.ext.declarative import declarative_base

engine = create_engine('sqlite:////tmp/test.db', convert_unicode=True)
db_session = scoped_session(sessionmaker(autocommit=False,
                                     autoflush=False,
                                     bind=engine))
Base = declarative_base()
Base.query = db_session.query_property()

它将启用您所期望的User.query....的速记。重要的是最后一条。您也可以使用来自Flask的db.Model类,而不是“纯”SQLAlchemy Base类。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28023444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档