Python 使用flask sqlalchemy查询数据库中现有的mysql表

Python 使用flask sqlalchemy查询数据库中现有的mysql表,python,mysql,flask,flask-sqlalchemy,Python,Mysql,Flask,Flask Sqlalchemy,我有一个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

我有一个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)
“abc”数据库中有一个表“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命令,而不是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访问现有表格用户?

在sqlalchemy中,如果要查询
表格()
,应使用会话查询表格。因为
“Table”对象没有属性“query”
。若表已经存在,您不需要创建它,只需使用它即可

在炼金术中,它几乎和炼金术一样

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = ""
db = SQLAlchemy(app)


class test(db.Model):
    msg = db.Column(db.String, primary_key=True)
    msg_ = db.Column(db.String)

    def __init__(self, msg, msg_):
        self.msg = msg
        self.msg_ = msg_

    def __repr__(self):
        return "msg: {} msg_: {}".format(self.msg,self.msg_)

result = test.query.filter_by(msg_="test").one()
print(result)
print(result.msg,result.msg_)
'''
msg: t msg_: test
t test
'''

我使用的是flask_sqlalchemy,所以我必须定义表并列出它的所有列,而不是使用任何绑定语句,它将绑定它自己的?是的,如果您使用的是class base。您可以尝试列出部分列,然后将引发错误。除非您希望重写构造函数(),否则不需要使用
\uuuuu init\uuuu
from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = ""
db = SQLAlchemy(app)


class test(db.Model):
    msg = db.Column(db.String, primary_key=True)
    msg_ = db.Column(db.String)

    def __init__(self, msg, msg_):
        self.msg = msg
        self.msg_ = msg_

    def __repr__(self):
        return "msg: {} msg_: {}".format(self.msg,self.msg_)

result = test.query.filter_by(msg_="test").one()
print(result)
print(result.msg,result.msg_)
'''
msg: t msg_: test
t test
'''