文章目录
Flask数据库连接
Python数据库连接方式
python中的数据库连接有两种方式:
- Python 标准数据库接口,使用 SQL 语句正常操作数据库,
e.g: MySQL 关系型数据库的 pymsql 模块 - 用 ORM 来进行数据库连接, Python 中使用 sqlalchemy , flask中典型的 flask_sqlalchemy ,
以面向对象的方式进行数据库的连接与操作 - ORM 是什么?有什么优势?
ORM ,即 Object-Relational Mapping (对象关系映射),它的作用是在关系型数据库和业务实体对象之间作一个映射,这样,我们在具体的操作业务对象的时候,就不需要再去和复杂的 SQL 语句打交道,只需简单的操作对象的属性和方法。
Flask-SQLAlchemy
Flask-SQLAlchemy 是一个 Flask 扩展,简化了在 Flask 程序中使用 SQLAlchemy 的操作。
SQLAlchemy 是一个很强大的关系型数据库框架,支持多种数据库后台。 SQLAlchemy 提
供了高层 ORM ,也提供了使用数据库原生 SQL 的低层功能。
配置数据库
安装第三方模块
pip install flask-sqlalchemy
数据库配置
在app.py文件中:
from flask_sqlalchemy import SQLAlchemy
# 获取当前绝对路径
basedir = os.path.abspath(os.path.dirname(__file__)) app = Flask(__name__)
# SQLALCHEMY_DATABASE_URI: 用于连接数据的数据库。
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + os.path.join(basedir, 'data.sqlite')
# sqlchemy将会追踪对象的修改并且发送信号
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
# 每次请求结束之后都会提交数据库的变动
app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True
# 数据库与app项目关联, 返回SQLAlchemy实例对象,
# 后面可以使用对象调用数据 db = SQLAlchemy(app)
流行的数据库引擎采用的数据库 URL格式
连接 mysql 数据库报错解决
报错为:ImportError: No module named ‘MySQLdb’”
MySQLdb只支持Python2,还不支持python3可以用PyMySQL代替。
安装方法:pip install PyMySQL
然后在需要的项目中,把 init.py中添加两行:
import pymysql
pymysql.install_as_MySQLdb()
就可以用 import MySQLdb了。其他的方法与MySQLdb一样。
定义模型
模型(Model)这个术语表示程序使用的持久化实体。
class Role(db.Model):
# __tablename__类变量定义数据库中表的名称。不指定默认为模型名称。
# Flask-SQLAlchemy需要给所有的模型定义主键列,通常命名为id。
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(64), unique=True)
# repr()显示一个可读字符串,用于调试和测试
def __repr__(self):
return '<Role %r>' % self.name
class User(db.Model):
__tablename__ = 'users'
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(64), unique=True, index=True)
def __repr__(self):
return '<User %r>' % self.username
模型列类型
模型列属性
数据查询
查询过滤器
查询执行函数
分页实现
分页对象拥有的属性
分页对象拥有的方法
数据库关系
数据库实体间有三种对应关系:一对一,一对多,多对多。
一对一关系
一个学生对应一个