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

目录
  • 数据库连接配置
  • 创建实体类
  • 配置打印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数据库内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python使用Flask Migrate模块迁移数据库

    目录 前言 安装 初始化 项目结构 三大命令 前言 本篇文章,阐述一下Flask中数据库的迁移 为什么要说数据库迁移呢? 比如我们以前有一个数据库,里面的信息有 id, name现在我想再加一个gender属性,应该怎么办呢?不可能直接把数据库删除掉吧.然后重新创建一个,因此本文介绍一种,通过数据库迁移的方法,可以保留原始的数据,并完成添加新的一列的方法. 安装 直接使用pip install flask-migrate即可 初始化 项目结构 # exts.py from flask_sqlal

  • Flask框架使用DBUtils模块连接数据库操作示例

    本文实例讲述了Flask框架使用DBUtils模块连接数据库的操作方法.分享给大家供大家参考,具体如下: Flask连接数据库 数据库连接池: Django使用:django ORM(pymysql/MySqldb) Flask/其他使用: -原生SQL         -pymysql(支持python2/3)         -MySqldb(支持python2)     -SQLAchemy(ORM) 原生SQL 需要解决的问题: -不能为每个用户创建一个连接         -创建一定数

  • flask框架使用orm连接数据库的方法示例

    本文实例讲述了flask框架使用orm连接数据库的方法.分享给大家供大家参考,具体如下: 注:使用前请安装flask_sqlalchemy包,由于python-mysql不适用于python3.6,所以我们使用pymysql进行替代 1. flask的app文件中输入以下代码 (文件名为:learn_flask_mysql_orm.py) from flask import Flask from flask_sqlalchemy import SQLAlchemy app = Flask(__n

  • Python的Flask框架与数据库连接的教程

     命令行方式运行Python脚本 在这个章节中,我们将写一些简单的数据库管理脚本.在此之前让我们来复习一下如何通过命令行方式执行Python脚本. 如果Linux 或者OS X的操作系统,需要有执行脚本的权限.例如: chmod a+x script.py 该脚本有个指向使用解释器的命令行.再脚本赋予执行权限后就可以通过命令行执行,就像这样: like this: ./script.py <arguments> 然而,在Windows系统上这样做是不行的,你必须提供Python解释器作为必选参

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

    目录 数据库连接配置 创建实体类 配置打印SQL语句 或.与.非和排序 数据库连接配置 HOST = "XXXXXXXXXXXXX" PORT = 3310 USERNAME = "root" PASSWORD = "@XXXXXXXXXXX" DATABASE = "mydb" SQLALCHEMY_DATABASE_URI = f"mysql+pymysql://{USERNAME}:{quote(PASSWOR

  • 详解Java使用JDBC连接MySQL数据库

    一:什么是数据库,为什么要有数据库? 数据,数据库,数据库管理系统和数据库系统是与数据库技术密切相关的四个基本概念. 数据库相信大家都耳熟能详了,其实数据库顾名思义就是存放数据的仓库,只不过这个仓库是在计算机存储设备上,而且数据是按一定的格式存放的~ 可能有朋友就要打断我施法了,停停停,我们Java程序猿在IDEA里面和控制台你侬我侬,没有对象new个对象存储在内存JVM的堆上就行了,学数据库干啥啊? 这时候我们就需要了解到:内存(Memory)也被称为内存储器,其作用是用于暂时存放CPU中的运

  • 详解JDBC数据库链接及相关方法的封装

    详解JDBC数据库链接及相关方法的封装 使用的是MySQL数据库,首先导入驱动类,然后根据数据库URL和用户名密码获得数据的链接.由于使用的是MySQL数据库,它的URL一般为,jdbc:mysql://主机地址:端口号/库名. 下面是封装的具体类,用到了泛型和反射,不过还存在些问题,就是对使用的泛型对象有些限制,只能用于泛型类对象属性名与数据库表中列名相同的对象,而且初始化对象的方法必须为set+属性名的方法.本来想通过返回值类型,参数列表来确定该属性初始化方法的,然而可能是目前学到的还是太少

  • 详解Mysql数据库平滑扩容解决高并发和大数据量问题

    目录 1 停机方案 2 停写方案 3 平滑扩容之双写方案(中小型数据) 4 平滑扩容之2N方案大数据量问题解决 4.1 扩容问题 4.2 解决方案 4.3 双主架构思想 4.4 环境部署 5 数据库秒级平滑2N扩容实践 5.1 新增数据库VIP 5.2 应用服务增加动态数据源 5.3 解除原双主同步 5.4 安装MariaDB扩容服务器 5.5 增加KeepAlived服务实现高可用 5.6 清理数据并验证 1 停机方案 发布公告 停止服务 离线数据迁移(拆分,重新分配数据) 数据校验 更改配置

  • DJango的创建和使用详解(默认数据库sqlite3)

    1.安装虚拟环境 虚拟环境是真实python环境的复制版本. 安装虚拟环境的命令: 1)sudo pip install virtualenv #安装虚拟环境 2)sudo pip install virtualenvwrapper #安装虚拟环境扩展包 3)编辑家目录下面的.bashrc文件,添加下面两行. export WORKON_HOME=$HOME/.virtualenvs source /usr/local/bin/virtualenvwrapper.sh 4)使用source .b

  • 详解Flask前后端分离项目案例

    简介 学习慕课课程,Flask前后端分离API后台接口的实现demo,前端可以接入小程序,暂时已经完成后台API基础架构,使用 postman 调试.git 重构部分: ken校验模块 auths认证模块 scope权限模块,增加全局扫描器(参考flask HTTPExceptions模块) 收获 我们可以接受定义时的复杂,但不能接受调用时的复杂 如果你觉得写代码厌倦,无聊,那你只是停留在功能的实现上,功能的实现很简单,你要追求的是更好的写法,抽象的艺术,不是机械的劳动而是要 创造 ,要有自己的

  • 详解MySQL数据库之触发器

    1 引言 本文是对MySQL中触发器的总结,从触发器概念出发,结合实例对创建触发器.使用触发器.删除触发器进行介绍. 2 触发器简介 MySQL触发器和存储过程一样,都是嵌入到MySQL的一段程序.触发器是由事件来触发某个操作,这些事件包括INSERT.UPDATE.DELETE.如果定义了触发器,当数据库执行这些语句的时候就会激活触发器执行相应的操作,触发程序是与表有关的命令数据库对象,当表上出现特定事件,将激活该对象. 触发器是一个特殊的存储过程,不同的是,执行存储过程要使用call语句来调

  • 详解MySQL 数据库范式

    前言: 关于数据库范式,时常有听说过,一直没有详细去了解.一般数据库书籍或数据库课程会介绍范式相关内容,范式也经常出现在数据库考试题目中.不清楚你是否对范式有比较清晰的了解呢?本篇文章我们一起来学习下数据库范式吧. 1.数据库范式简介 为了建立冗余较小.结构合理的数据库,设计数据库时必须遵循一定的规则.在关系型数据库中这种规则就称为范式.范式是符合某一种设计要求的总结.要想设计一个结构合理的关系型数据库,必须满足一定的范式. 范式的英文名称是 Normal Form ,简称 NF .它是英国人

  • 详解MySQL 数据库隔离级别与MVCC

    Mysql是我们日常生产与学习中最常接触到的数据库之一,今天讲一讲在Mysql(或者说其他类似的数据库)中存在的隔离级别以及用来提高效率的多版本并发控制(MVCC). 一.隔离级别 首先我们需要提到一个概念:事务.什么是事务?事务就是完成一个基础操作的一系列操作语句的一个集合.例如我要将200元从账户A转移到账户B,那么我可能会进行一下的操作: a.验证账户A中的余额是否大于200元. b.将账户A中的余额减200元. c.将账户B中的余额加200元. 我们就将上面的abc三个操作成为一个事务.

  • 详解MySQL数据库千万级数据查询和存储

    百万级数据处理方案 数据存储结构设计 表字段设计 表字段 not null,因为 null 值很难查询优化且占用额外的索引空间,推荐默认数字 0. 数据状态类型的字段,比如 status, type 等等,尽量不要定义负数,如 -1.因为这样可以加上 UNSIGNED,数值容量就会扩大一倍. 可以的话用 TINYINT.SMALLINT 等代替 INT,尽量不使用 BIGINT,因为占的空间更小. 字符串类型的字段会比数字类型占的空间更大,所以尽量用整型代替字符串,很多场景是可以通过编码逻辑来实

随机推荐