1.ORM介绍
ORM又称"对象关系映射", 即Object Relation Mapping. 那到底什么是"对象关系映射"
Django框架中:
模型类 <---> 表
属性 <---> 字段
对象 <---> 记录
# ORM优势与缺点
# 优势:
(2).省去自己拼写SQL,保证SQL语法的正确性
(3).一次编写可以适配多个数据库
(4).防止注入攻击
(5).在数据库表名或字段名发生变化时,只需修改模型类的映射,无需修改数据库操作的代码(相比SQL的话,可能需要同步修改涉及到的每一个SQL语句)
# 缺点:
执行效率低下
# ORM框架
- SQLAlchemy
- Flask-SQLAlchemy
SQLAlchemy是python的包, Flask-SQLAlchemy是对SQLAlchemy的进一步封装, 以作为Flask框架的扩展适配Flask框架.
2.Flask-SQLAlchemy扩展
# 安装Flask-SQLAlchemy
pip install flask-sqlalchemy
# 连接数据库:
from flask import Flask
from common import db
app = Flask(__name__)
class Config(object):
SQLALCHEMY_DATABASE_URI = 'mysql://root:admin123@127.0.0.1:3306/jiyunstus'
SQLALCHEMY_TRACK_MODIFICATIONS = False
SQLALCHEMY_ECHO = True
app.config.from_object(Config)
# 初始化数据库
db.init_app(app)
if __name__ == '__main__':
app.run()
# 创建模型类
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True)
email = db.Column(db.String(120), unique=True)
def __str__(self):
return self.username
# common文件下init中初始化db对象,找个地方就行,防止导包循环
from flask_sqlalchemy import SQLAlchemy
db=SQLAlchemy()
# 创建迁移脚本
from common import db
from cloudinfo.main import app
from flask_migrate import MigrateCommand,Migrate
from flask_script import Manager
# 导入下你创建的模型类
from app.models import User
manage=Manager(app)
migrate=Migrate(app,db)
manage.add_command('db',MigrateCommand)
if __name__ == '__main__':
manage.run()
# 执行迁移命令
# 写你迁移的脚本名
python script.py db init
python script.py db migrate
python script.py db upgrade
3.单表数据增删改查操作
3.1新增数据与事务
# 增加数据 use = User(id,username,password) # 定义会话进行添加 db.session.add(use) # 提交事务 db.session.commit() # 注意: 增加数据, 修改数据及删除数据均需要提交事务 # 增加多条: db.session.add_all([use1, use2, use3])
3.2简单查询
# 简单查询 User.query.all() User.query.get(1) User.query.filter_by(username='name').first()
3.3更新数据
# 修改数据
User.query.filter_by(username='name').update({'password':'newdata'})
# 注意: 增加数据, 修改数据及删除数据均需要提交事务
db.session.commit()
3.4删除数据
# 删除数据 User.query.filter_by(username='name').delete() # 注意: 增加数据, 修改数据及删除数据均需要提交事务 db.session.commit()



