
Web框架——Flask系列之Flask-SQLAlchemy安装与使用 & 定义数据模型(八)
发布日期:2021-05-08 02:34:17
浏览次数:24
分类:原创文章
本文共 2042 字,大约阅读时间需要 6 分钟。
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 Flaskfrom 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)
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2025年04月02日 19时49分41秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
js-禁止右键菜单代码、禁止复制粘贴代码
2021-05-07
数组--Go语言学习笔记
2021-05-07
Redis (三)——Linux 上安装 Redis
2021-05-07
java 重写(override)和重载(overload)区别
2021-05-07
java 多态类型转换
2021-05-07
常用正则表达式
2021-05-07
XML:采用XHTML和CSS设计可重用可换肤的WEB站点
2021-05-07
Java判断字符串是否为金额
2021-05-07
angr学习笔记(7)(malloc地址单元符号化)
2021-05-07
树状数组 模板总结
2021-05-07
结构型设计在工作中的一些经验总结
2021-05-07
如何提升员工体验 助力企业业务增长?这个棘手的问题终于被解决了!
2021-05-07
2020 AI 产业图谱启动,勾勒中国 AI 技术与行业生态
2021-05-07
Netty4服务端入门代码示例
2021-05-07
Spring源码:prepareBeanFactory(beanFactory);方法
2021-05-07
AcWing 828. 模拟栈
2021-05-07
(20200328已解决)从docker容器内复制文件到宿主机
2021-05-07
理解Docker ulimit参数
2021-05-07
OpenAI Gym简介及初级实例
2021-05-07
int 转 CString
2021-05-07