Python通过Sqlalchemy框架实现增删改查

embedded/2024/10/19 21:35:42/

目录

简介

什么是SQLAlchemy?

SQLAlchemy可以分为两个部分:Core和ORM。

一、首先安装sqlalchemy

二、在配置文件中添加数据库连接信息,我这里是Mysql

三、 创建数据库连接类,我这里是动态读取数据库的表字段,自动生成实体model

四、验证


简介


什么是SQLAlchemy?


SQLAlchemy是一个Python的SQL工具和ORM框架,可以通过Python代码直接操作关系型数据库,也可以使用ORM模型进行对象关系映射。它支持多种数据库,并提供了强大的SQL表达式和查询API。

SQLAlchemy可以分为两个部分:CoreORM

Core:提供了底层的SQL表达式和查询API,支持多种数据库的可移植操作,例如连接管理、事务管理、对象关系映射、元数据管理等。
ORM:提供了基于Core的高级API,使得开发者可以使用Python的面向对象语法方式来进行数据库操作,把数据库表中的记录映射到Python中的对象实例上。ORM部分可以通过继承和关联来轻松进行数据关系的管理和维护,大大简化了数据库操作的难度。
以下是SQLAlchemy的一些优点:

可移植性:支持多种数据库,并提供了统一的API,使得应用程序对于不同数据库的切换和迁移更加容易。
易用性:提供了易用的API和强大的对象关系映射功能,开发者可以使用面向对象的方式来操作数据库,并且可以把数据库表中的记录映射到Python中的对象实例上。
易扩展性: SQLAchemy由活跃的开源社区维护,提供了完整的文档、教程和资料支持,可以方便地扩展和定制。
性能表现良好:SQLAlchemy在实现中采用了连接池管理连接,缓存查询结果等技术,以确保较高的性能和可伸缩性。
总之,SQLAlchemy是Python操作数据库的一个非常强大和优美的工具和框架,无论是从开发者的角度还是从性能方面考虑,都是一个非常不错的选择。

一、首先安装sqlalchemy

pip install sqlalchemy

二、在配置文件中添加数据库连接信息,我这里是Mysql

三、 创建数据库连接类,我这里是动态读取数据库的表字段,自动生成实体model

python">from sqlalchemy.ext.automap import automap_base
from sqlalchemy.orm import sessionmaker
from sqlalchemy import create_engine
from config.config import USERNAME,PASSWORD,HOSTNAME,DATABASE
from urllib import parse
# 创建基类
Base = automap_base()
# 替换以下 URL 为你的数据库连接字符串
PWD = parse.quote_plus(PASSWORD)
engine = create_engine('mysql+pymysql://{}:{}@{}/{}'.format(USERNAME,PWD,HOSTNAME,DATABASE))
# 映射已存在的表
Base.prepare(engine, reflect=True)# 创建会话
Session = sessionmaker(bind=engine)
session = Session()"""
这下面就可以根据表明直接生成实体Model了
"""
#字典表
DictionaryDO = Base.classes.mp_tb_z_dictionary
#秘钥表
keyDO = Base.classes.mp_tb_z_key

四、在主类引用可直接实现增删改查的操作

python">from model.mysql_db_model import DictionaryDO ,keyDO,session"""
测试专用
"""
@bi.route('/ssss', methods=['GET'])
def get_test():#查询DictionaryDOList = session.query(DictionaryDO).all()data = [{'id': dictionaryDO.id, 'type': dictionaryDO.type}  # 根据您的需求添加更多字段for dictionaryDO in DictionaryDOList]#增删改查 。。。。。。等等操作return jsonify({"code": 0,"msg": "success","data": data})

四、验证

postman访问结果:


http://www.ppmy.cn/embedded/120024.html

相关文章

如何修复变砖的手机并恢复丢失的数据

您可能之前听说过“变砖”,但您知道什么是变砖手机吗?正如许多论坛中经常提出的问题一样,我如何知道我的手机是否变砖了?好吧,手机变砖主要有两种类型,即软件变砖和硬变砖。软变砖手机意味着重启后您仍然可…

ArcGIS与ArcGIS Pro去除在线地图服务名单

我们之前给大家分享了很多在线地图集,有些地图集会带有制作者信息,在布局制图的时候会带上信息影响出图美观。 一套GIS图源集搞定!清新规划底图、影像图、境界、海洋、地形阴影图、导航图 比如ArcGIS: 比如ArcGIS Pro&#xff1a…

网游和3A类型游戏的CPU选择分析

目录 1. CPU性能基础 1.1 主频 1.2 三级缓存(L1、L2、L3缓存) 1.3 架构 1.4 单核与多核性能 2. 游戏类型分析 2.1 网游:以《永劫无间》为例 多核性能需求: 单核性能需求: CPU选择建议: 2.2 3A类…

平安养老险肇庆中心支公司开展“2024年金融教育宣传月”活动

为加强消费者金融教育宣传,切实提升社会公众金融素养,有效防范化解金融风险,营造和谐健康金融环境,在肇庆金融监管分局指导下,平安养老险肇庆中心支公司开展金融教育宣传月暨反洗钱宣传月系列活动。 9月11日&#xff…

jenkins 构建报错ERROR: Error fetching remote repo ‘origin‘

问题描述 修改项目的仓库地址后,使用jenkins构建报错 Running as SYSTEM Building in workspace /var/jenkins_home/workspace/【测试】客户端/client-fonchain-main The recommended git tool is: NONE using credential 680a5841-cfa5-4d8a-bb38-977f796c26dd&g…

vue3监听子组件的生命周期

1.Vue3使用vue&#xff0c;vue2使用hook template:<compG vue:mounted"doSomething"></compG>script://监听子组件生命周期let doSomething (e: any) > {console.log("没有啊11", e);}; 2.打印结果

C++:模板(1)

目录 实现泛型的交换函数 函数模板 1.概念 2.格式 3.原理 4.函数模板实例化 5.函数模板参数的匹配原则 类模板 1.定义格式 2.实例化 3.声明与定义问题 实现泛型的交换函数 我们实现一个对所有类型都通用的交换函数&#xff0c;可以用函数重载来实现。 void Swap(in…

YOLO V8半自动标注工具设计

前提&#xff1a; 对于某些边界不明确的小目标&#xff0c;要是目标由比较多的话&#xff0c;标注起来就会非常麻烦。 如何利用已有训练模型&#xff0c;生成框&#xff0c;进行预标注。再通过调节预标注框的方式&#xff0c;提高标注的效率。 1 通过预先训练的模型生成yolo 格…