搜索

查看: 3104|回复: 11

[Python] 详解Flask数据库的连接与使用

[复制链接]
发表于 2023-5-4 17:19:10 | 显示全部楼层 |阅读模式
Editor 2023-5-4 17:19:10 3104 11 看全部
目录
  • 数据库连接配置
  • 创建实体类
  • 配置打印SQL语句
  • 或、与、非和排序
    数据库连接配置
    HOST = "XXXXXXXXXXXXX"
    PORT = 3310
    USERNAME = "root"
    PASSWORD = "@XXXXXXXXXXX"
    DATABASE = "mydb"

    SQLALCHEMY_DATABASE_URI = f"mysql+pymysql://{USERNAME}:{quote(PASSWORD)}@{HOST}:{PORT}/{DATABASE}?charset=utf8mb4"
    SQLALCHEMY_TRACK_MODIFICATIONS = False
    SQLALCHEMY_ECHO = True

    创建实体类
    from exts.DBServer import db
    from sqlalchemy import Column, Integer, String, Date, DateTime


    class Article(db.Model):
        __tablename__ = "article"
        id = Column(Integer, primay_key=True, autoincrement=True)
        title = Column(String(100), nullable=True)
        pub_time = Column(DateTime, nullable=True)
        author = Column(String(100), nullable=True)
        content = Column(String(10000), nullable=True)
        origin = Column(String(1000), nullable=True)
    controller:
    import json

    from flask.blueprints import Blueprint
    from exts.DBServer import db
    from ..model.Article import Article
    from flask_sqlalchemy.query import Query
    from flask_restful import marshal
    from flask_restful import fields

    article_bp = Blueprint("article", __name__, url_prefix="/article")

    article_fields = {
        "id": fields.Integer,
        "title": fields.String,
        "pub_time": fields.DateTime,
        "author": fields.String,
        "content": fields.String,
        "origin": fields.String
    }


    @article_bp.route("/queryAll")
    def queryAll():
        query: Query = Article.query
        articles = query.all()
        article = query.get(1)
        article2 = query.filter_by(author="XXX")
        return json.dumps(marshal(articles, fields=article_fields),ensure_ascii=False)

    配置打印SQL语句
    from exts.DBServer import db
    from sqlalchemy import Column, Integer, String


    class User(db.Model):
        __tablename__ = "user"
        id = Column(Integer, primary_key=True, autoincrement=True)
        username = Column(String(100), nullable=True)
        password = Column(String(100), nullable=True)

        def __repr__(self):
            return "User %r" % self.body

    或、与、非和排序
    @user_bp.route("/query")
    def query_match():
        query: Query = User.query
        result = query.filter(or_(User.username.contains("祥"), User.id == 1))

        return json.dumps(marshal(result.all(), fields=user_fields), ensure_ascii=False)


    @user_bp.route("/in")
    def in_sql():
        query: Query = User.query
        result = query.order_by(-User.password, -User.id)
        return json.dumps(marshal(result.all(), fields=user_fields), ensure_ascii=False)
    到此这篇关于详解Flask数据库的连接与使用的文章就介绍到这了,更多相关Flask数据库内容请搜索知鸟论坛以前的文章或继续浏览下面的相关文章希望大家以后多多支持知鸟论坛
  • 回复

    使用道具 举报

    发表于 2023-6-29 00:12:12 | 显示全部楼层
    啤酒瓶空了缓 2023-6-29 00:12:12 看全部
    楼主发贴辛苦了,谢谢楼主分享!我觉得知鸟论坛是注册对了!
    回复

    使用道具 举报

    发表于 2023-6-29 18:58:33 | 显示全部楼层
    幸福341 2023-6-29 18:58:33 看全部
    其实我一直觉得楼主的品味不错!呵呵!知鸟论坛太棒了!
    回复

    使用道具 举报

    发表于 2023-6-29 19:00:19 | 显示全部楼层
    我的苦恼冉 2023-6-29 19:00:19 看全部
    论坛不能没有像楼主这样的人才啊!我会一直支持知鸟论坛
    回复

    使用道具 举报

    发表于 2023-6-29 21:05:02 | 显示全部楼层
    老橡树1 2023-6-29 21:05:02 看全部
    楼主发贴辛苦了,谢谢楼主分享!我觉得知鸟论坛是注册对了!
    回复

    使用道具 举报

    发表于 2023-6-29 23:11:03 | 显示全部楼层
    永远就三年疗 2023-6-29 23:11:03 看全部
    这东西我收了!谢谢楼主!知鸟论坛真好!
    回复

    使用道具 举报

    发表于 2023-6-29 23:40:06 | 显示全部楼层
    伊索谗言 2023-6-29 23:40:06 看全部
    其实我一直觉得楼主的品味不错!呵呵!知鸟论坛太棒了!
    回复

    使用道具 举报

    发表于 2023-6-30 03:53:52 | 显示全部楼层
    知足常乐77 2023-6-30 03:53:52 看全部
    既然你诚信诚意的推荐了,那我就勉为其难的看看吧!知鸟论坛不走平凡路。
    回复

    使用道具 举报

    发表于 2023-6-30 10:00:19 | 显示全部楼层
    贺老师 2023-6-30 10:00:19 看全部
    楼主发贴辛苦了,谢谢楼主分享!我觉得知鸟论坛是注册对了!
    回复

    使用道具 举报

    发表于 2023-7-3 10:02:49 | 显示全部楼层
    戏做顿 2023-7-3 10:02:49 看全部
    楼主,我太崇拜你了!我想我是一天也不能离开知鸟论坛
    回复

    使用道具 举报

    • 您可能感兴趣
    点击右侧快捷回复 【请勿灌水】
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则 返回列表

    RSS订阅| SiteMap| 小黑屋| 知鸟论坛
    联系邮箱E-mail:zniao@foxmail.com
    快速回复 返回顶部 返回列表