flask-SQLAlchemy简介
1. 什么是Flask-SQLAlchemy?
- Flask-SQLAlchemy 是一个 Flask 扩展,简化了在 Flask 程序中使用 SQLAlchemy 的操作。
- SQLAlchemy 是一个很强大的关系型数据库框架,支持多种数据库后台。
- SQLAlchemy 提供了高层 ORM,也提供了使用数据库原生 SQL 的低层功能。
- 由于SQLAlchemy提供了一个支持多种数据库后台的强大数据库框架,导致需要花费时间将简洁的代码转换成相应数据库的代码。所以代码的执行效率不高。
2. 如何安装Flask-SQLAlchemy?
pip install flask-sqlalchemy
3. 如何配置数据库?
http://www.pythondoc.com/flask-sqlalchemy/quickstart.html
from flask_sqlalchemy import SQLAlchemy
basedir = os.path.abspath(os.path.dirname(__file__))
app = Flask(__name__)
# 配置mysql数据库的相关信息
# 在配置之前需要在数据库中创建一个数据库,为了可以接收中文设置编码格式为utf8
# mysql://用户名:密码@主机名/数据库
app.config['SQLALCHEMY_DATABASE_URI'] ='mysql://root:redhat@localhost/UserTest'
# sqlchemy将会追踪对象的修改并且发送信号
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
# 配置完数据库信息,实例化SQLAlchemy对象
db = SQLAlchemy(app)
4. 连接mysql数据库报错解决
经过上网搜索得知,MySQLdb并不支持Python3.5,因此只能找别的类库代替。
解决方法:
使用pymysql代替MySQLdb,因为两者的用法完全一致,步骤:
-
PIP install pymysql
-
执行成功后,打开__init__.py,添加如下:
import pymysql
pymysql.install_as_MySQLdb()
5. 如何定义模型?
- 模型这个术语表示程序使用的持久化实体。
- 模型列类型
- 模型列属性
- 模型列类型
class User(db.Model):
# 默认情况下表名为类的名称, 如果想要重新设置表名, __tablename__
# 类变量 __tablename__ 定义在数据库中使用的表名.
__tablename__ = "用户信息"
# db.Column 类构造函数的第一个参数是数据库列和模型属性的类型。
# db.Column 中其余的参数指定属性的配置选项。
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(30), unique=True, nullable=Flase) # unique=True用户名不能重复
password = db.Column(db.String(20), nullable=Flase)
email = db.Column(db.String(20), unique=True)
6.对数据库操作
- 在数据库中创建表
- 在表中对数据进行操作(增删改查)
- sqlalchemy查询过滤器
- 分页对象paginate拥有的属性
- 分页对象paginate拥有的方法
- sqlalchemy查询过滤器
from flask import Flask,render_template
from datetime import datetime
import pymysql
from flask_bootstrap import Bootstrap
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
pymysql.install_as_MySQLdb()
#数据库配置及实例化
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:redhat@localhost/UserTest'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)
# bt = Bootstrap(app)
#定义数据库模型
class User(db.Model):
# 默认情况下表名为类的名称,如果想重新设置表名,__tablename__
__tablename__ = '用户信息'
id = db.Column(db.Integer,primary_key=True)
username = db.Column(db.String(20),unique=True,index=True,nullable=False)
password = db.Column(db.String,nullable=False)
email