1.ORM介绍,基本配置及通过ORM框架创建表
1.介绍
ORM全拼Object-Relation Mapping(对象-关系映射)
作用:主要实现模型对象到关系数据库数据的映射
通过ORM框架作为一个中间者或者是一个桥梁,开发者通过定义模型类,属性体现对象间的关系,通过调用模型对象的save(),Delete(),all(),get()方法,进行操作数据库,而不是使用原生的sql语句进行直接进行数据库操作。
优点:
只需要面向对象编程, 不需要面向数据库编写代码.
对数据库的操作都转化成对类属性和方法的操作.
不用编写各种数据库的sql语句
.
实现了数据模型与数据库的解耦, 屏蔽了不同数据库操作上的差异.
不在关注用的是mysql
、oracle
...等.
通过简单的配置就可以轻松更换数据库, 而不需要修改代码
缺点:
相比较直接使用SQL语句操作数据库,有性能损失.
根据对象的操作转换成SQL语句,根据查询的结果转化成对象, 在映射过程中有性能损失.
2.Flask-SQLAlchemy安装及配置
(1)安装flask-sqlalchemy
pip install flask-sqlalchemy
(2)如果连接的是mysql数据库,需要安装mysqldb
pip install flask-mysqldb
如果在Ubuntu中安装mysqldb框架失败解决方案:https://blog.****.net/qq_31903733/article/details/82999631
(3)代码(创建表的代码)
from flask import Flask from flask_sqlalchemy import SQLAlchemy app=Flask(__name__) # 配置数据库连接地址 app.config['SQLALCHEMY_DATABASE_URI']="mysql://root:123456@127.0.0.1:3306/rupeng" # 是否追踪数据库的修改 app.config['SQLALCHEMY_TRACK_MODIFICATIONS']=False # 初始化SQLAlchemy db=SQLAlchemy(app) class Role(db.Model): # 表名不指定,默认为类名小写 __tablename__="UserInfo" id=db.Column(db.Integer,primary_key=True,autoincrement=True) name=db.Column(db.String(64),unique=True) @app.route("/") def index(): return "index" if __name__ == '__main__': db.create_all() app.run(debug=True)
数据库连接设置:
在 Flask-SQLAlchemy 中,数据库使用URL指定,而且程序使用的数据库必须保存到Flask配置对象的 SQLALCHEMY_DATABASE_URI 键中
app.config['SQLALCHEMY_DATABASE_URI']="mysql://root:123456@127.0.0.1:3306/rupeng"
动态追踪修改设置,如果未设置指挥提示警告
app.config['SQLALCHEMY_TRACK_MODIFICATIONS']=False
查询时会显示原始SQL语句
app.config['SQLALCHEMY_ECHO']=True