SQLAlchemy详解

这篇具有很好参考价值的文章主要介绍了SQLAlchemy详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、SQLAlchemy介绍

  SQLAlchemy 是 Python SQL 工具包和对象关系映射器,为应用程序开发人员提供 SQL 的全部功能和灵活性。

  SQLAlchemy支持SQLite、PostgreSQL、Oracle、MySQL、MariaDB、Microsoft SQL Server等多种数据库。

二、SQLAlchemy安装

  SQLAlchemy详解

  我安装的版本是:SQLAlchemy==2.0.29。注意SQLAlchemy2.x以上的版本和1.x版本差别还是挺大的,注意版本。

  因为SQLAlchemy不能直接操作数据库,还需要python中的pymysql第三方库,所以还需要安装pymysql

  SQLAlchemy详解

  PyMySQL==1.1.0.

三、创建测试数据库

  创建一个用于测试的数据库

  SQLAlchemy详解

  其中sqlalchemydb就是测试数据库

四、封装SQLAlchemyDB类

  在python项目根目录下创建一个sqlalchemy_db.py文件,当然你也可以在其他目录下创建。其中内容如下:

  SQLAlchemy详解

  说明1:该文件sqlalchemy_db.py的作用是封装一个SQLAlchemy的类,为实例化sqlAlchemy对象做准备

  说明2:self.engine是连接数据的引擎设置,只有设置了engine,我们才能通过sqlalchemy对象操作数据库

  说明3:self.session可以理解为数据库的操作对象,我们对数据库的操作都是基于该session实现的。

  说明4:engine参数解释

  1. 参数url:SQLAlchemy要连接的数据库地址,其格式为:数据库类型+数据库驱动://数据库用户:数据库密码@数据库地址:端口号/数据库名称?编码方式
  2. 参数isolation_level:设置事务的隔离界别
  3. 参数pool_recycle:设置回收链接的时间,单位毫秒
  4. 参数pool_pre_ping:每次连接前预先ping一下
  5. 参数pool_size: 链接池中保持数据库连接的数量,默认是5
  6. 参数max_overflow :当链接池中的连接数不够用的时候,允许额外再创建的最大链接数量,默认是10
  7. pool_timeout:排队等数据库链接时的超时时间
  说明5: scoped_session创建的session是线程安全的。

五、创建model模型

  5.1 SQLAlchemy支持的数据类型

    • Integer:整形
    • String:字符串
    • Float:浮点型
    • DECIMAL:定点型
    • Boolean:bool
    • Date:日期类型
    • DateTime:日期+时间类型
    • Time:时间类型
    • Enum:枚举类型
    • Text:文本类型
    • LongText:长文本类型

  5.2 SQLAlchemy字段常用的约束

    • default:默认值
    • nullable:是否可空
    • primary_key:是否为主键
    • unique:是否唯一
    • autoincrement:是否自动增长
    • name:该属性在数据库中的映射字段

  5.3 创建测试的model.py文件

    在项目的根目录或者你需要的地方创建一个model.py文件,内容如下:

    SQLAlchemy详解

 文章来源地址https://www.toymoban.com/news/detail-844168.html

    说明1:为了测试效果,我们在这个model类中尽可能的多展示了不同字段的使用

    说明2:Base.metadata.create_all() 会将我们的模型自动映射到数据库中,当然也可以手动去数据库中创建表

    说明3:我们写好的这个model类暂时还没有使用呢 。

六、创建测试文件

  在项目根目录下或者你需要的地方创建一个test.py文件,内容如下:

  SQLAlchemy详解

  这时我们在test.py中就只引入mysql_db和TestModel,其他的先不写,然后使用python test.py运行该脚本,就会发现我们的model模型,已经同步到数据库中了

   SQLAlchemy详解

七、添加测试数据

  7.1 单条添加数据

    修改test.py文件如下,然后python test.py执行

    SQLAlchemy详解

    执行之后,我们去数据库查看结果如下:
    SQLAlchemy详解

    说明1:create_time,update_time,is_delete都是有默认值的字段,如果不设置,会自动显示默认值。

    说明2:money字段总长度时9位,但是可以少于9位,不能多于9位,小数部位不足时补0

  7.2 批量添加数据

    再来演示一下批量增加数据,代码如下还是在test.py中

     SQLAlchemy详解

 

    执行后的结果如下:

    SQLAlchemy详解

八、修改删除

  8.1 修改

    刚才已经演示了增加数据的代码,下面我们看一下修改,代码如下,还是在test.py文件中

    SQLAlchemy详解

    查看一下数据库

    SQLAlchemy详解

  8.2 删除

    可以看到姓名和性别已经修改成功。再来测试一下删除数据

    SQLAlchemy详解

    SQLAlchemy详解

    可以看出,数据库中已经没有id=1的数据了

九、查询

  在进行查询测试之前,先往数据库中添加一下测试数据

  SQLAlchemy详解

   9.1 query关键字

    在做查询的时候我们通常query关键字,它类似于SQL中select 关键字,query参数通常可以填写三类参数

    • model模型对象:指定查找这个模型中所有的字段
    • model模型对象中的属性:可以指定只查找某个model中的几个属性字段
    • 聚合函数:func.count(统计行的数量),func.avg(求平均数),func.max(求最大值),func.min(求最小值),func.sum(求和)

    SQLAlchemy详解

    查看一下打印结果

    SQLAlchemy详解

    说明1:在做查询的时候 .first() 表示查询第一个满足条件的数据

    说明2:在做查询的时候 .all() 表示查询所有数据

    说明3:如果不是查询全部字段,只查询部分字段或者聚合函数的话,结果返回的是一个元组,通过下标取数据即可

  9.2 filter关键字

    过滤是数据提取的一个很重要的功能,以下对一些常用的过滤条件进行解释,并且这些过滤条件都是只能通过filter方法实现,常用的方法有

    • 相等: ==
    • 不相等: !=
    • 模糊查询:like(%xx$)
    • 包含:in_()
    • 不包含:~ in_() 注意 ~不是直接加在in前面的,注意看代码示例
    • 空:==None 或者 is_(None)
    • 不为空: !=None 或者 isnot(None)
    • 并且: and_()或者也可以使用逗号连接多个条件
    • 或者:or_()

    SQLAlchemy详解

    打印结果如下:

    SQLAlchemy详解

  9.3分页查询

    方式1:使用limit+offset实现

    SQLAlchemy详解

    查询结果为:

    SQLAlchemy详解

    方式2:使用slice

    SQLAlchemy详解

    输出结果为:

    SQLAlchemy详解

十、排序

   SQLAlchemy详解

  输出结果为:

  SQLAlchemy详解

 

到了这里,关于SQLAlchemy详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python中使用cantools和can工具包解析blf文件

    一、工具包安装 二、解析blf文件 一般情况下,解析blf需要dbc文件,当然其实不用dbc也可以,只不过解析比较麻烦,推荐还是配合dbc解析,这个也是我们最常用的办法。所以要用dbc,需要先加载dbc文件,这里需要cantools,代码: 加载完dbc文件,就可以解析blf文件了,代码 打印

    2024年02月11日
    浏览(33)
  • 生物系统学中的进化树构建和分析R工具包V.PhyloMaker2的介绍和详细使用

    V.PhyloMaker2是一个R语言的工具包,专门用于构建和分析生物系统学中的进化树(也称为系统发育树或phylogenetic tree)。以下是对V.PhyloMaker2的一些基本介绍和使用说明: 论文介绍:V.PhyloMaker2: An updated and enlarged R package that can generate very large phylogenies for vascular plants - ScienceDirect  

    2024年02月04日
    浏览(68)
  • 用好Python自然语言工具包-- 实例“基于本地知识库的自动问答”

    首先鸣谢thomas-yanxin 本问中示例来自他在GitHub上的开源项目“基于本地知识库的自动问答”,链接如下: thomas-yanxin/LangChain-ChatGLM-Webui: 基于LangChain和ChatGLM-6B的针对本地知识库的自动问答 (github.com) 目录 1. 基础知识: 2. NLTK库的使用 3. 实例代码分析 设备的定义 函数定义:从网

    2024年02月05日
    浏览(61)
  • 用了这8个 Python 数据挖掘工具包,生产力明显得到了提升!

    在进行数据科学时,可能会浪费大量时间编码并等待计算机运行某些东西。所以我选择了一些 Python 库,可以帮助你节省宝贵的时间。 喜欢记得收藏、关注、点赞,文末送技术交流和资料 Optuna 是一个开源的超参数优化框架,它可以自动为机器学习模型找到最佳超参数。 最基

    2024年02月01日
    浏览(48)
  • Python mpl_toolkits.mplot3d工具包绘制三维图

    在Python中我们可以导入 mplot3d 工具包来绘制三维图。 在 Matplotlib 1.0.0 之前,每个图形只能创建一个 Axes3D ,需要被直接定义为 ax = Axes3D 在 Matplotlib 3.2.0 之前,必须导入 mpl_toolkits.mplot3d 模块将 Projection=\\\'3d\\\' 传递给 Figure.add_subplot 3维坐标系通过将 Projection=\\\'3d\\\' 传递给

    2024年02月12日
    浏览(52)
  • 仪酷LabVIEW AI视觉工具包及开放神经网络交互工具包常见问题解答

    哈喽,各位朋友,好久不见~ 之前给大家分享了基于LabVIEW开发的AI视觉工具包及开放神经网络交互工具包,不少朋友私信说在安装和使用过程中会遇到一些问题,今天我们就集中回复一下大家问到最多的问题。如果大家在使用过程中还有其他问题,可以补充到评论区,我们这

    2024年02月16日
    浏览(57)
  • GIS工具包

    GIS工具包,根据jts工具,结合实际使用场景提取出来的常用工具集合;涵盖几何格式转换(WKT,GeoJSON等)与geometry转换、gis距离计算、度距离单位换算、角度计算、buffer运算、映射截取、几何穿串等操作 gis-tools源码库地址 1.1 WktTool使用说明 wkt格式与geometry互转; wkt转geometry操作

    2024年02月06日
    浏览(68)
  • 学习笔记-JVM-工具包(JVM分析工具)

    常用工具 JDK工具 ① jps: JVM Process status tool:JVM进程状态工具,查看进程基本信息 ② jstat: JVM statistics monitoring tool : JVM统计监控工具,查看堆,GC详细信息 ③ jinfo:Java Configuration Info :查看配置参数信息,支持部分参数运行时修改 ④ jmap:Java Memory Map :分析堆内存工具,du

    2024年02月13日
    浏览(55)
  • MATLAB添加工具包(详细)

    我这里要添加的文件包为:DeepLearnToolbox-master 我这里的安装目录是:D:softwareMATLABtoolbox (1)以中文版为例,在主界面找到“设置路径”按钮 (2)点击“设置路径”,弹出设置界面 第一步:点“添加文件夹” (注:如果要工具包中有多个子文件夹,则点“添加并包含子文

    2024年02月02日
    浏览(65)
  • Hardhat工具包1--安装使用

    参考资料: 官方文档 : https://hardhat.org/getting-started/ https://hardhat.org/hardhat-runner/docs/getting-started#overview 基于Hardhat和Openzeppelin开发可升级合约(一) 基于Hardhat和Openzeppelin开发可升级合约(一)_灬倪先森_的博客-CSDN博客 ---------------------------------------------------------------------------------

    2023年04月11日
    浏览(106)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包