FSN中文网

领取MOLI红包
ANML中文网    你的位置:FSN中文网 > ANML中文网 >

Python SQLAlchemy入门教程(基本用法)

发布日期:2025-01-03 17:47    点击次数:151

本文将以Mysql举例,介绍sqlalchemy的基本用法。其中,Python版本为2.7,sqlalchemy版本为1.1.6。 一. 介绍 SQLAlchemy是Python中最有名的ORM工具。 关于ORM: 全称Object Relational Mapping(对象关系映射)。 特点是操纵Python对象而不是SQL查询,也就是在代码层面考虑的是对象,而不是SQL,体现的是一种程序化思维,这样使得Python程序更加简洁易读。 具体的实现方式是将数据库表转换为Python类,其中数据列作为属性,数据库操作作为方法。 优点: 简洁易读:将数据表抽象为对象(数据模型),更直观易读 可移植:封装了多种数据库引擎,面对多个数据库,操作基本一致,代码易维护 更安全:有效避免SQL注入 为什么要用sqlalchemy? 虽然性能稍稍不及原生SQL,但是操作数据库真的很方便! 二. 使用 概念和数据类型 概念 概念 对应数据库 说明 Engine 连接 驱动引擎 Session 连接池,事务 由此开始查询 Model 表 类定义 Column 列 Query 若干行 可以链式添加多个条件 常见数据类型 数据类型 数据库数据类型 python数据类型 说明 Integer int int 整形,32位 String varchar string 字符串 Text text string 长字符串 Float float float 浮点型 Boolean tinyint bool True / False Date date datetime.date 存储时间年月日 DateTime datetime datetime.datetime 存储年月日时分秒毫秒等 Time time datetime.datetime 存储时分秒 创建数据库表 1.安装 pip install SQLalchemy 2. 创建连接 这行代码初始化创建了Engine,Engine内部维护了一个Pool(连接池)和Dialect(方言),方言来识别具体连接数据库种类。 创建好了Engine的同时,Pool和Dialect也已经创建好了,但是此时并没有真正与数据库连接,等到执行具体的语句.connect()等时才会连接到数据库。 create_engine还有其它可选的参数,比如: echo: 当设置为True时会将orm语句转化为sql语句打印,一般debug的时候可用 pool_size: 连接池的大小,默认为5个,设置为0时表示连接无限制 pool_recycle: 设置时间以限制数据库多久没连接自动断开 3. 创建数据库表类(模型) 前面有提到ORM的重要特点,那么我们操作表的时候就需要通过操作对象来实现,现在我们来创建一个类,以常见的用户表举例: declarative_base()是sqlalchemy内部封装的一个方法,通过其构造一个基类,这个基类和它的子类,可以将Python类和数据库表关联映射起来。 数据库表模型类通过__tablename__和表关联起来,Column表示数据表的列。 4. 生成数据库表 Base.metadata.create_all(engine) 创建表,如果存在则忽略,执行以上代码,就会发现在db中创建了users表。 操作数据 表创建好了就是操作数据了,常见的操作增删改查,我们一一介绍。 session sqlalchemy中使用session用于创建程序和数据库之间的会话,所有对象的载入和保存都需要通过session对象 。 通过sessionmaker调用创建一个工厂,并关联Engine以确保每个session都可以使用该Engine连接资源: session的常见操作方法包括: flush:预提交,提交到数据库文件,还未写入数据库文件中 commit:提交了一个事务 rollback:回滚 close:关闭 增 举个最简单的例子: session.add()将会把Model加入当前session维护的持久空间(可以从session.dirty看到)中,直到commit时提交到数据库。 Q1:add之后如何直接返回对象的属性? 可以在add之后执行db.session.flush(),这样便可在session中get到对象的属性。 Q2:如何进行批量插入,性能比较? 批量插入共有以下几种方法,对它们的批量做了比较,分别是: session.add_all() < bulk_save_object() < bulk_insert_mappings() < SQLAlchemy_core() 查 查询是最常用的一个操作了,举个最简单的查询例子: 通常我们通过以上查询模式获取数据,需要注意的是,通过session.query()我们查询返回了一个Query对象,此时还没有去具体的数据库中查询,只有当执行具体的.all(),.first()等函数时才会真的去操作数据库。 其中,query有filter和filter_by两个过滤方法,上述例子也可写为: 通常这两个方法都会用到的,所以一定要掌握它们的区别: filter filter_by支持所有比较运算符,相等比较用比较用==只能使用"=","!="和"><"过滤用类名.属性名过滤用属性名不支持组合查询,只能连续调用filter变相实现参数是**kwargs,支持组合查询支持and,or和in等 改 更新数据有两种方法,一种是使用query中的update方法: filter filter_by 支持所有比较运算符,相等比较用比较用== 只能使用"=","!="和"><" 过滤用类名.属性名 过滤用属性名 不支持组合查询,只能连续调用filter变相实现 参数是**kwargs,支持组合查询 支持and,or和in等 改 更新数据有两种方法,一种是使用query中的update方法: 另一种是操作对应的表模型: 这两种方式呢,一般批量更新的话我会选前者,而要对查询获取对象属性之后再更新的场景就需要使用后者。 删 和更新数据类似,删除数据也有两种方法,第一种: 第二种: 批量删除时推荐使用第二种。 以上,就是Python sqlalchemy的基本用法。 代码可参照:my github 总结 以上所述是小编给大家介绍的Python SQLAlchemy入门教程,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持! 如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

上一篇:没有了

下一篇:海洋链霉菌Streptomyces Sp.B59中天然产物的挖掘

Powered by FSN中文网 @2013-2022 RSS地图 HTML地图

Copyright Powered by站群系统 © 2013-2024

top