当前位置: 首页 > news >正文

[python flask 数据库ORM操作]

一、链接数据库

我们选择的框架是flask-sqlAlchemy 这个框架是对pymysql的封装。
连接数据库

#导入包
from flask_sqlalchemy import SQLAlchemy
#创建flask app对象
app = Flask(__name__)
#设置配置信息
HOSTNAME = "localhost"
PORT = 3306;
USERNAME = "root";
PASSWORD = "密码xxxxx";
DATABASE = "flask_test";
app.config['SQLALCHEMY_DATABASE_URI'] = f"mysql+pymysql://{USERNAME}:{PASSWORD}@{HOSTNAME}:{PORT}/{DATABASE}?charset=utf8";#这里自动读取的配置就是SQLALCHEMY_DATABASE_URI这个配置。--利用配置创建数据库对象
db = SQLAlchemy(app)

这里就已经脸上数据库了

二、创建表

这里是继承db.Model这个类上的方法等。

class User(db.Model):__tablename__ = "User";id = db.Column(db.Integer,primary_key = True,autoincrement = True);   #主键id 自增常# varcharusername = db.Column(db.String(32),nullable = False);password = db.Column(db.String(128),nullable = False);create_time = db.Column(db.DateTime);def __repr__(self):     #设置输出打印格式return "<Role:%s,%s>" % (self.id, self.username)

三、数据库表的增删改查操作

三步:
1、首先在python中先创建好相关对象。 --前面已经创建了数据库表类
2、将ORM对象添加到db.session会话中,这个数据库中你打开的一个文件也是一个会话。
3、将db.session中的改变同步到数据库中。

@app.route("/user/add")
def add_user():# 1. 创建ORM对象user = User(username="Carling",password = "Carlingisking!",create_time = datetime.now());# 2. 将ORM对象添加到db.session中db.session.add(user);# 3. 将db.session中的改变同步到数据库中db.session.commit();return '用户创建成功!';

根据id删除,也是要先拿到数据记录再删除

@app.route('/user/delete')
def delete_user():# 1. 查找user = User.query.get(1)# 2. 从db.session中删除db.session.delete(user)# 3. 将会话中的修改保存到数据库中db.session.commit();return "数据删除成功";

先拿到再改

@app.route("/user/update")
def update_user():user = User.query.filter_by(username = "法外狂徒张三").first();user.password = "22222";db.session.commit();return "数据修改成功";

@app.route("/user/query")
def query_user():# 1. get查找:根据主键查找user = User.query.get(1)# 2. filter_by查找# Queryusers = User.query.filter_by(username = "法外狂徒张三”)for user in users:print(user.username);return "数据查找成功";

数据库中的查有许多操作,下面例举一下
在这里插入图片描述

四、外键

1、创建外键 — 建表的时候,告知某个字段对应其余表的哪个字段。例如:

author_id = db.Column(db.Integer, db.ForeignKey("User.id"));

2、两个字段相互联系:
方法一:backref

#Article表中的字段author
author = db.relationship("User", backref="articles”)    #这句话说明它需要对应User表中的字段articles,这时不需要再User表中进行补充代码

方法二:back_populates

#Article表中的字段author
author = db.relationship("User",back_populates = "articles”)
#User表中的字段articles
articles = db.relationship("Article", back_populates = "author")

将两个表联系起来。

五、ORM对象的migrate迁移

首先,问题是,为什么需要利用flask-migrate进行对象迁移?
Answer: 原始方案中的db.create_all() 不能够实现表创建完成之后的字段的增加和修改。

#原始方案
with app.app_context():db.create_all()

因此要使用migrate框架来实现python中和数据库中的ORM对象的同步:

初始化迁移环境: 
flask db init 
在项目中创建一个migrate目录,用于存放迁移脚本生成迁移脚本 
flask db migrate 
这个命令会比较你的模型定义和当前数据库的状态,生成一个迁移脚本应用迁移 
flask db upgrade
这个命令执行脚本,从而在数据库中创建或更新表结构
http://www.lryc.cn/news/467712.html

相关文章:

  • 【JavaScript】如何优雅的编码if判断中的一个变量多个或条件
  • SaaS云诊所系统源码,基于云计算技术的SAAS模式诊所管理系统,适用于诊所、门诊、卫生服务站、卫生站
  • 字节,AI产品经理面试,拿下offer!
  • Postgresql pgsql 插件之postgis 安装配置
  • 单片机STC8H8K64U开发板_RA6809开发板 驱动彩屏显示
  • Redis底层和缓存雪崩,击穿,穿透
  • [Java基础] 集合框架
  • 机器学习基础:算法如何让 AI 自我学习
  • 25届字节跳动 抖音NLP算法工程师 面经
  • 转行网络工程师以后的就业前景如何?
  • docker 和 containerd 关系
  • 算法-二叉树的最大路径和
  • 解决url含%导致404错误
  • [Linux Codec驱动]音频路由概念
  • 母线槽温度监测的哪个部位?安科瑞母线槽测温解决方案-安科瑞黄安南
  • 《深度学习》—— 模型的部署
  • 多IP访问浏览器
  • 1024程序员节福利放送 | AI 照片修复魔法,一键重拾旧时记忆
  • OSPF特殊区域及其他特性
  • 动态量化:大模型在端侧CPU快速推理方案
  • 什么是零拷贝以及其应用场景是什么?
  • 开源(open source)是什么?为什么要开源?
  • 基于Spring Boot的论坛网站:从零到部署
  • vue开发的一个小插件vue.js devtools
  • GraphLLM:基于图的框架,通过大型语言模型处理数据
  • HarmonyOS 5.0应用开发——Navigation实现页面路由
  • 物联网行业应用实训室建设方案
  • SOLIDWORKS 2025更灵活零件建模
  • 智能巡检机器人的大模型训练
  • RabbitMQ系列学习笔记(九)--路由模式