怎么在Python中使用SQLAlchemy

  介绍

怎么在Python中使用SQLAlchemy ?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

<强>一。介绍

SQLAlchemy是Python中最有名的ORM工具。

关于ORM:

全称对象关系映射(对象关系映射)。

特点是操纵Python对象而不是SQL查询,也就是在代码层面考虑的是对象,而不是SQL,体现的是一种程序化思维,这样使得Python程序更加简洁易读。

具体的实现方式是将数据库表转换为Python类,其中数据列作为属性,数据库操作作为方法。

优点:

<李>

简洁易读:将数据表抽象为对象(数据模型),更直观易读

<李>

可移植:封装了多种数据库引擎,面对多个数据库,操作基本一致,代码易维护

<李>

更安全:有效避免SQL注入

为什么要用SQLAlchemy ?

虽然性能稍稍不及原生SQL,但是操作数据库真的很方便!

<强>二。使用

概念和数据类型

概念


概念对应数据库说明引擎连接驱动引擎会话连接池,事务由此开始查询模型表类定义列列
查询若干行可以链式添加多个条件

常见数据类型


数据类型数据库数据类型python数据类型说明Integerintint整形,32位Stringvarcharstring字符串Texttextstring长字符串Floatfloatfloat浮点型BooleantinyintboolTrue/FalseDatedatedatetime.date存储时间年月日DateTimedatetimedatetime.datetime存储年月日时分秒毫秒等Timetimedatetime.datetime存储时分秒

创建数据库表

1。安装

<代码> pip安装SQLalchemy

2。创建连接

得到sqlalchemy  import  create_engine      engine =, create_engine (“mysql://用户:password@hostname/dbname ? charset=uft8")

这行代码初始化创建了引擎,引擎内部维护了一个池(连接池)和方言(方言),方言来识别具体连接数据库种类。

创建好了引擎的同时,池和方言也已经创建好了,但是此时并没有真正与数据库连接,等到执行具体的语句.connect()等时才会连接到数据库。

create_engine还有其它可选的参数,比如:

engine =, create_engine (“mysql://用户:password@hostname/dbname ? charset=uft8",   ,,,,,,,,,,,呼应=True,   ,,,,,,,,,,,pool_size=8,   ,,,,,,,,,,,pool_recycle=60 * 30   ,,,,,,,,,,,) <李>

回声:当设置为真时会将orm语句转化为sql语句打印,一般调试的时候可用

<李>

pool_size:连接池的大小,默认为5个,设置为0时表示连接无限制

<李>

pool_recycle:设置时间以限制数据库多久没连接自动断开

<强> 3。创建数据库表类(模型)

前面有提到ORM的重要特点,那么我们操作表的时候就需要通过操作对象来实现,现在我们来创建一个类,以常见的用户表举例:

得到sqlalchemy.ext.declarative  import  declarative_base   时间=Base  declarative_base ()   class 用户(基础):   __tablename__ =,才能“users"      id 才能=,列(整数,,primary_key=True)   name 才能=,列(字符串(64),独特的=True)   email 才能=,列(字符串(64))   def 才能;__init__(自我,,名字,,电子邮件):   ,,,self.name =,名字   ,,,self.email =,

declarative_base邮件()是sqlalchemy内部封装的一个方法,通过其构造一个基类,这个基类和它的子类,可以将Python类和数据库表关联映射起来。

数据库表模型类通过__tablename__和表关联起来,表列示数据表的列。

<强> 4。生成数据库表

<代码> Base.metadata.create_all(引擎)

创建表,如果存在则忽略,执行以上代码,就会发现在db中创建了用户表。

操作数据

表创建好了就是操作数据了,常见的操作增删改查,我们一一介绍。

sqlalchemy会话中使用会话用于创建程序和数据库之间的会话,所有对象的载入和保存都需要通过会话对象。

通过sessionmaker调用创建一个工厂,并关联引擎以确保每个会话都可以使用该引擎连接资源:

得到sqlalchemy.orm  import  sessionmaker      #,创建会话   时间=DbSession  sessionmaker(绑定=引擎)   session =, DbSession ()

会话的常见操作方法包括:

<李>

冲洗:预提交,提交到数据库文件,还未写入数据库文件中

怎么在Python中使用SQLAlchemy