我有一个flask应用程序,使用flask slqalchemy查询mysql数据库
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:password@localhost/abc'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)
“”数据库中有一个表“users”,它已经填充了几百行。现在我需要导入这个现有的表,而不是首先用db.model定义它。我如何调用这个表?如果我这么做
from sqlalchemy import Table
USERS = Table('users', db.metadata,autoload=True, autoload_with=db.engine)
那我就不能提出这样的问题了
USERS.query.filter_by(done=1).with_entities(USERS.name,USERS.country).paginate(page, 15, False)
它会产生一个错误
AttributeError: 'Table' object has no attribute 'query'
因为这是sqlchemy命令,而不是flask sqlchemy,所以我不能完全理解这一点。
我必须像第一次创建表一样首先定义表用户:
class USERS(db.Model):
__tablename__ = 'users'
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
name = db.Column(db.VARCHAR(500))
country = db.Column(db.VARCHAR(50))
def __init__(self, id, name, country):
self.id = id
self.name = name
self.country = country
def __repr__(self):
return self.id
只有这样,我才能使用用户通过sqlalchemy查询数据库
如何在flask应用程序中使用flask sqlchemy访问现有表用户?
1条答案
按热度按时间wi3ka0sx1#
在sqlalchemy中,如果要查询,应该使用会话查询表
Table()
. 因为'Table' object has no attribute 'query'
. 如果表已经存在,您不需要创建它,只要使用它就可以了。sqlalchemy现有数据库查询在炼金术中,它几乎和炼金术一样。