翼度科技»论坛 编程开发 python 查看内容

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

7

主题

7

帖子

21

积分

新手上路

Rank: 1

积分
21
数据库连接配置
  1. HOST = "XXXXXXXXXXXXX"
  2. PORT = 3310
  3. USERNAME = "root"
  4. PASSWORD = "@XXXXXXXXXXX"
  5. DATABASE = "mydb"

  6. SQLALCHEMY_DATABASE_URI = f"mysql+pymysql://{USERNAME}:{quote(PASSWORD)}@{HOST}:{PORT}/{DATABASE}?charset=utf8mb4"
  7. SQLALCHEMY_TRACK_MODIFICATIONS = False
  8. SQLALCHEMY_ECHO = True
复制代码
创建实体类
  1. from exts.DBServer import db
  2. from sqlalchemy import Column, Integer, String, Date, DateTime


  3. class Article(db.Model):
  4.     __tablename__ = "article"
  5.     id = Column(Integer, primay_key=True, autoincrement=True)
  6.     title = Column(String(100), nullable=True)
  7.     pub_time = Column(DateTime, nullable=True)
  8.     author = Column(String(100), nullable=True)
  9.     content = Column(String(10000), nullable=True)
  10.     origin = Column(String(1000), nullable=True)
复制代码
controller:
  1. import json

  2. from flask.blueprints import Blueprint
  3. from exts.DBServer import db
  4. from ..model.Article import Article
  5. from flask_sqlalchemy.query import Query
  6. from flask_restful import marshal
  7. from flask_restful import fields

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

  9. article_fields = {
  10.     "id": fields.Integer,
  11.     "title": fields.String,
  12.     "pub_time": fields.DateTime,
  13.     "author": fields.String,
  14.     "content": fields.String,
  15.     "origin": fields.String
  16. }


  17. @article_bp.route("/queryAll")
  18. def queryAll():
  19.     query: Query = Article.query
  20.     articles = query.all()
  21.     article = query.get(1)
  22.     article2 = query.filter_by(author="XXX")
  23.     return json.dumps(marshal(articles, fields=article_fields),ensure_ascii=False)
复制代码
配置打印SQL语句
  1. from exts.DBServer import db
  2. from sqlalchemy import Column, Integer, String


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

  8.     def __repr__(self):
  9.         return "User %r" % self.body
复制代码
或、与、非和排序
  1. @user_bp.route("/query")
  2. def query_match():
  3.     query: Query = User.query
  4.     result = query.filter(or_(User.username.contains("祥"), User.id == 1))

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


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

来源:https://www.jb51.net/article/276387.htm
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具