社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  DATABASE

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

Aarushi Ign • 6 年前 • 2077 次点击  

我有一个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命令,而不是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

只有这样,我才能使用用户通过flask sqlalchemy查询数据库

如何在flask应用程序中使用flask sqlchemy访问现有的表用户?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/40288
 
2077 次点击  
文章 [ 1 ]  |  最新文章 6 年前
kcorlidy
Reply   •   1 楼
kcorlidy    6 年前

在sqlalchemy中,如果要查询表,应该使用session查询表 Table() . 因为 'Table' object has no attribute 'query' . 如果表已经存在,则不需要创建它,只需使用它。 sqlalchemy existing database query

from sqlalchemy import Table, Column, String, create_engine, MetaData
from sqlalchemy.orm import sessionmaker

engine = create_engine()

metadata = MetaData()
test_ = Table('test', metadata,
    Column('msg', String, primary_key=True),
    Column('msg_', String)
)
Session = sessionmaker(bind=engine)
session = Session()
print(session.query(test_).filter_by(msg_ = "test").with_entities("msg","msg_").one())
# ('t', 'test')

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

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
'''