Flask-SQLAlchemy安装及设置

  • SQLALchemy 实际上是对数据库的抽象,让开发者不用直接和 SQL 语句打交道,而是通过 Python 对象来操作数据库,在舍弃一些性能开销的同时,换来的是开发效率的较大提升
  • SQLAlchemy是一个关系型数据库框架,它提供了高层的 ORM 和底层的原生数据库的操作。flask-sqlalchemy 是一个简化了 SQLAlchemy 操作的flask扩展。
  • 文档地址:http://docs.jinkan.org/docs/flask-sqlalchemy

一、安装

安装 flask-sqlalchemy

pip install flask-sqlalchemy

如果连接的是 mysql 数据库,需要安装 mysqldb

pip install flask-mysqldb

提示:如果flask-mysqldb安装不上,安装, pip install pymysql

二、数据库连接设置

  • 设置数据库的链接地址,追踪信息
  • 格式:mysql://<用户名>:<密码>@:<端口>/数据库名称

# 数据库链接地址
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:mysql@127.0.0.1:3306/test'
# 动态追踪修改设置,如未设置只会提示警告
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True

查看映射的sql语句,设置: app.config[‘SQLALCHEMY_ECHO’] = True

  • 配置完成需要去 MySQL 中创建项目所使用的数据库
$ mysql -uroot -pmysql
$ create database test charset utf8;

三、其他配置信息

连接其他数据库

完整连接 URI 列表请跳转到 SQLAlchemy 下面的文档 (Supported Databases) 。这里给出一些 常见的连接字符串。

  • Postgres:

postgresql://scott:tiger@localhost/mydatabase

  • MySQL:

mysql://scott:tiger@localhost/mydatabase

  • Oracle:

oracle://scott:tiger@127.0.0.1:1521/sidname

  • SQLite (注意开头的四个斜线):

sqlite:absolute/path/to/foo.db

常用的SQLAlchemy字段类型

常用的SQLAlchemy列选项

常用的SQLAlchemy关系选项

四、代码演示(定义数据模型)

from flask import Flask
from flask_sqlalchemy import SQLAlchemyapp = Flask(__name__)# 数据库链接地址
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:root@127.0.0.1/flask_sql_demo'
# 动态追踪修改设置,如未设置只会提示警告,不建议开启,未来版本中会移除
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = Falsedb = SQLAlchemy(app)'''
两张表
角色(管理员/普通用户)
用户(角色ID)
'''# 数据库的模型,需要继承db.Model
# 角色表
class Role(db.Model):# 定义表名__tablename__ = 'roles'# 定义字段# db.Column表示是一个字段id = db.Column(db.Integer,primary_key=True)name = db.Column(db.String(16),unique=True)# 用户表
class User(db.Model):# 定义表名__tablename__ = 'users'# 定义字段id = db.Column(db.Integer, primary_key=True)name = db.Column(db.String(16), unique=True)# db.ForeignKey('roles.id')表示是外键,需要传参数:表名.字段名role_id = db.Column(db.Integer,db.ForeignKey('roles.id'))@app.route('/')def index():return 'Hello flask!'
if __name__ == '__main__':app.run(debug=True)

Web框架——Flask系列之Flask-SQLAlchemy安装与使用 定义数据模型(八)相关推荐

  1. [Link]选择一个 Python Web 框架:Django vs Flask vs Pyramid

    选择一个 Python Web 框架:Django vs Flask vs Pyramid

  2. Web框架——Flask系列之Flask简介(一)

    一.Web应用程序作用 Web(World Wide Web)诞生最初的目的,是为了利用互联网交流工作文档 二.关于Web框架 (一)什么是Web框架? 已经封装好了一段代码,协助程序快速开发,相当于 ...

  3. Web框架——Flask系列之Flask创建app对象 路由(十二)

    一.初始化参数 import_name: 当前模块名 static_url_path:静态资源的url前缀,默认为'static' static_folder: 静态文件目录名,默认'static' ...

  4. 框架的特性_Go 语言 Web 框架 Echo 系列:基础篇—通过一个例子串联各特性

    通过前面的介绍,相信对 echo 有了一个初步的认识.本文我们通过一个简单的登录页面来串联 echo 的相关特性.因为该文主要关注各个特性,所以在目录结构和代码组织方面很随意. 本节最终效果 1)登录 ...

  5. Web框架——Flask系列之Flask中的特殊变量和方法(十九)

    在Flask中,有一些特殊的变量和方法是可以在模板文件中直接访问的. 一.config对象 config 对象就是Flask的config对象,也就是 app.config 对象. {{ config ...

  6. Web框架——Flask系列之宏、继承、包含(十八)

    一.宏 类似于python中的函数,宏的作用就是在模板中重复利用代码,避免代码冗余. Jinja2支持宏,还可以导入宏,需要在多处重复使用的模板代码片段可以写入单独的文件,再包含在所有模板中,以避免重 ...

  7. Go语言web框架beego:脚手架bee的安装及创建beego项目

    beego介绍 bee脚手架的安装 go get github.com/beego/bee #如果使用上述命令很慢的话,进行如下操作 第一步:到GitHub上下载源码 第二步:进入到源码bee目录,执 ...

  8. Flask系列06--(中间件)Flask的特殊装饰器 before_request,after_request, errorhandler

    一.使用 Flask中的特殊装饰器(中间件)方法常用的有三个 @app.before_request # 在请求进入视图函数之前 @app.after_request # 在请求结束视图函数之后 响应 ...

  9. 【PHP框架 | Laravel8 系列1】 - Composer 安装指定 Laravel 版本

    前言:之前在学习并使用 Laravel 框架过程中,全是碎片化掌握,现在重新学习并记录一次学习的过程. 本文内容所对应 Laravel8.* 版本. 一. 安装 Composer 第一种: Compo ...

最新文章

  1. LeetCode简单题之丢失的数字
  2. 数位dp ---- 2020 icpc 上海 Sum of Log(枚举高位的二进制数位dp)
  3. Linux apt-get命令
  4. SQL基础使用入门(二): DML语句和DCL语句
  5. 将SAP订单以XML格式输出
  6. ThinkPhp5 | 模块分析
  7. [转]31个让你变聪明的方法
  8. PL/SQL控制结构
  9. mysql执行一条sql语句的完整过程,sql语句在mysql中的执行过程
  10. windows10完全删除mysql_Windows 10系统下彻底删除卸载MySQL的方法教程
  11. java 开关按钮_SwitchButton开关按钮的多种实现方式
  12. CocoaLumberjack+XcodeColor(输出带有颜色的日志)在安装过程中遇到的问题
  13. NoteExpress免费版只7个引文样式#NoteExpress免费版新增引文样式
  14. 2017知乎看山杯总结(多标签文本分类)
  15. 安装rpm包时提示错误:依赖检测失败
  16. css中indent是什么意思,css文本属性中的text-indent的解析
  17. word中批注快速跳转
  18. 下载stm32f10x标准外设库
  19. 数据预处理-python实现
  20. NUC977 烧录uboot到 SPI flash

热门文章

  1. java中为什么设计包装类,Java 中为什么要设计包装类
  2. 力扣交替打印FooBar
  3. Linux-(C/C++)生成并使用静态库/动态库
  4. java 线程 状态 图_Java提高——多线程(一)状态图
  5. 中班机器人上课视频_家委会:出班费买智能扫地机器人,不用家长搞卫生了,莫名其妙...
  6. [New Portal]Windows Azure Virtual Machine (17) Virtual Machine成本分析
  7. 利用CVE-2019-1040 - 结合RCE和Domain Admin的中继漏洞
  8. 【Java基础总结】网络编程
  9. A5营销:传统企业站优化正文内容在SEO方面的三大注意事项
  10. mysql5.5中的MaxValue关键字