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)