Flask 的 ORM 模型应用
发布时间:2023-06-30 14:25:19 所属栏目:教程 来源:
导读:本小节介绍了 sqlAlchemy 的相关 API,通过一个完整的例子,对 MysqL 数据库进行增、删、改、查。
1. 功能概述
在本小节,编写程序 app.py,对一个名称为 school 的数据库进行增、删、改、查,数据库中存在一张表
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。 (编辑:汽车网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |