Flask-SQLAlchemy 操作步骤【入门简易版】
在介绍Flask-SQLAlchemy之前,先说一下ORM的概念:
ORM:
ORM 全拼 【Object-Relation Mapping】.
中文意为 【对象-关系映射】.
主要实现模型对象到关系数据库数据的映射.
也就是说,我们可以不需要直接写原生SQL语句,通过调用对象方法的方式,对数据库进行增删改查的操作;呐,ORM有下面的优点:
- 只需要面向对象编程, 不需要面向数据库编写代码. 对数据库的操作都转化成对类属性和方法的操作. 不用编写各种数据库的sql语句.
- 实现了数据模型与数据库的解耦, 屏蔽了不同数据库操作上的差异. 不在关注用的是mysql、oracle…等.
通过简单的配置就可以轻松更换数据库, 而不需要修改代码.
嗯,在Flask中,我们可以使用Flask-SQLAlchemy这个框架,来完成这种对象关系映射的方式。
当然了,首先的需要在你的Flask中安装这个扩展:
1.安装相关的扩展:
安装代码:
pip install flask-sqlalchemy
我自己使用的是mysql数据库,所以这里还需要安装一个mysqldb
pip install flask-mysqldb
2.数据库的连接
既然我们现在是通过这个SQLAlchemy框架来完成数据库的相关操作,那么是不是应该遵循ORM理念,通过面向对象的方式干活呢,所以,我们需要用SQLAlchemy这个类来初始化一个对象;
初始化 SQLAlchemy 对象
db = SQLAlchemy(app)
但是哈,我们通过进入SQLAlchemy的源代码中会发现,在app默认为none的情况下,SQLAlchemy生成的对象db就会默认使用app相关的配置,然后呢,我们就需要在初始化对象之前,进行app的相关配置:
大概是下面几个:
但是实际上,我目前需要配置的,如下:
初始化之前,需要进行app的相关配置:
1.是数据库的连接配置:
app.config[‘SQLALCHEMY_DATABASE_URI’] = '数据库类型://用户名:密码@数据库ip:数据库端口/数据库名称
比如:
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://xiaomin:xiaomin123@127.0.0.1:8888/xiaominsql'
2.动态追踪修改设置,如未设置只会提示警告
你不配置这段代码的话,在运行的时候,就会提示警告,但是看着跟报错一样的一长串,为了避免审美受累,所以就配置一下,一劳永逸,何乐不为。
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
3.模型的创建:
模型对象到关系数据库数据的映射,也就说,我们可以直接创建一个表的模型,然后通过相关语句进行提交,SQLAlchemy底层会帮我们转换成原生sql语句进行表的创建,所以这里我们只需要针对不同的表,创建不同的模型即可:
比如,我现在创建一个:
class Role(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(64))
Column:列,就是数据库中所说的字段;
Interger,String:是用来声明字段的类型的;
常用字段类型参考:
4.创建:
创建的话,这里可以通过create_all()就可以通过模型创建一个表了。
db.create_all()
当然,这个方式,只是在这里用来做小小的验证的,实际项目应用的话是不会这样使用的。
【入门简易代码】参考:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://xiaomin:xiaomin123@127.0.0.1:8888/xiaominsql'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
db = SQLAlchemy(app)
@app.route('/')
def index():
return 'hello world'
class Role(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(64))
if __name__ == '__main__':
db.create_all()
app.run()
当然了,实际上的操作还有增删改查等等一系列操作,在这里就不进行讲述了,等下次再写吧,这里只是简单的小入门哦。。