加入收藏 | 设为首页 | 会员中心 | 我要投稿 汽车网 (https://www.0577qiche.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

Flask 的 ORM 模型应用

发布时间:2023-06-30 14:25:19 所属栏目:教程 来源:
导读:本小节介绍了 sqlAlchemy 的相关 API,通过一个完整的例子,对 MysqL 数据库进行增、删、改、查。

1. 功能概述
在本小节,编写程序 app.py,对一个名称为 school 的数据库进行增、删、改、查,数据库中存在一张表
本小节介绍了 sqlAlchemy 的相关 API,通过一个完整的例子,对 MysqL 数据库进行增、删、改、查。

1. 功能概述
在本小节,编写程序 app.py,对一个名称为 school 的数据库进行增、删、改、查,数据库中存在一张表 students,包含的字段如下:
字段名    类型    描述
sno    整数    学号
name    字符串    姓名
age    整数    年龄
在上一个小节中,使用 MysqL 的命令行创建表 students,在本节的例子中,为了展示 ORM 的功能,以编程的方式创建表 students。

2. 配置 sqlAlchemy
首先,引入相关库,对访问 MysqL 进行配置,如下所示:
#!/usr/bin/python3
from flask import Flask
from flask_sqlalchemy import sqlAlchemy
import sys
app = Flask(__name__)
user = 'root'
password = '123456' 
database = 'school'
uri = 'MysqL+pyMysqL://%s:%s@localhost:3306/%s' % (user, password, database)
app.config['sqlALCHEMY_DATABASE_URI'] = uri 
db = sqlAlchemy(app)
在第 1 行到第 4 行,引入库 flask 和 flask_sqlalchemy;在第 6 行到第 11 行,对 sqlAlchemy 进行配置,设置如下参数:

参数    值
user    访问数据库的用户,假设是 root
password    访问数据库的密码,假设是 123456
database    数据库名称
uri    sqlAlchemy 连接数据库的字符串
在第 8 行,对 sqlAlchemy 进行配置,sqlALCHEMY_DATABASE_URI 配置的是连接数据库的字符串,在这个例子中,该字符串为:
MysqL+pyMysqL://root:123456@localhost:3306/school
字符串中的 “MysqL+pyMysqL” 表示:数据库类型是 MysqL,使用 pyMysqL 作为访问 MysqL 的底层 API。
最后,在第 13 行,创建 sqlAlchemy 对象,用于映射数据库表和对象。

3. 程序框架
程序包含有 4 个主要功能:
函数名    功能
create_table    创建表 students
insert_students    在表 students 中插入数据
query_students    查询表 students
update_students    更新表 students 中的数据
delete_students    删除表 students 中的数据
class Student(db.Model):
    pass
def create_table():
    pass
def insert_students():
    pass
def query_students():
    pass
def update_students():
    pass
def delete_students():
    pass
command = sys.argv[]
if command == 'create':
    create_table()
elif command == 'insert':
    insert_students()
elif command == 'query':
    query_students()
elif command == 'update':
    update_students()
elif command == 'delete':
    delete_students()
首先,定义继承于 db.Model 的类 Student,该类映射数据库中的表 students;然后,分别定义了实现上述功能的函数,在后续小节会陆续填充;最后,例子程序是一个命令行程序,根据不同的命令行参数调用相应的功能函数。

4. 创建表
class Student(db.Model):
    __tablename__ = 'students'
    sno = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String())
    age = db.Column(db.Integer)
    def dump(self):
        print(self.sno, self.name, self.age)
def create_table():
    db.drop_all()
    db.create_all()
首先,建立表和类的映射关系:创建类 Student 继承于 db.Model,表示类 Student 用于映射数据库中的表;设定 __tablename__ 为 students,表示将类 Student 映射到数据库中的表 students。

然后,建立属性和字段的映射关系:映射 sno 到表 students 的字段 sno,类型为整数 (db.Integer),primary_key=True 表示该字段是主键; 映射 name 到表 students 的字段 name,类型为整数 (db.String); 映射 age 到表 students 的字段 age,类型为整数 (db.Integer)。

调用 db.drop_all() 删除数据库 school 中的所有表格;调用 db.create_all() 创建已经建立映射关系的表 students,表 students 已经被映射到类 Student。

(编辑:汽车网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章