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。 (编辑:汽车网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
