Имам работещ демон, който генерира данни и ги записва в моята база данни с помощта на Flask. Сега изграждам API услуга върху същите тези данни и се надявам да използвам повторно същите си модели, но това изглежда не работи според очакванията. Ето как изглежда кодът на моя модел:
from sqlalchemy import BigInteger, Column, DateTime, Float, ForeignKey, Index, Integer, String
from sqlalchemy.orm import relationship
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
metadata = Base.metadata
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String(200), nullable=False, unique=True)
...
Но тогава, когато се опитам да го извикам от приложението Flask:
from flask.ext.sqlalchemy import SQLAlchemy
from models import User
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'some_mysql_connect_str'
db = SQLAlchemy(app)
...
def get_users_named_bob():
return User.query.filter_by(name='bob')
Получавам: AttributeError: type object 'User' has no attribute 'query'
Кой е най-добрият начин да направите това?
Странична бележка: Видях този въпрос от около преди година, но се надявам, че оттогава нещата са се подобрили, тъй като изглежда често използван случай.