站点图标 江湖人士

Python数据库ORM工具sqlalchemy的学习笔记

Python数据库ORM工具sqlalchemy的学习笔记

SQLAlchemy是python的一个数据库ORM东西,供给了强大的对象模子间的转换,能够满足绝大大都数据库操作的需求,而且支撑多种数据库引擎(sqlite,mysql,postgres, mongodb等),在这里记实根基用法和进修笔记。

起首是毗连到数据库,SQLALchemy支撑多个数据库引擎,分歧的数据库引擎毗连字符串纷歧样,常用的有

connection是一般利用数据库的体例,sqlalchemy还供给了另一种操作数据库的体例,通过session对象,session能够记实和跟踪数据的改变,在恰当的时候提交,而且支撑强大的ORM的功能,下面是根基利用

上面建立了一个session对象,接下来能够操作数据库了,session也支撑通过sql语句操作数据库

上面简单引见了sql的简单用法,既然是ORM框架,我们先定义两个模子类User和Role,sqlalchemy的模子类承继自一个由declarative_base()方式生成的类,我们先定义一个模块Models.py生成Base类

上面的所有操作都是基于单个表的操作,下面是多表以及关系的利用,我们点窜上面两个表,添加外键联系关系(一对多和多对一)

上面暗示的是一对多(多对一)的关系,还有一对一,多对多,若是要暗示一对一的关系,在定义relationship的时候设置uselist为False(默认为True),如在Role中

多表查询凡是利用join进行表毗连,第一个参数为表名,第二个参数为前提,例如

join为内毗连,还有左毗连outerjoin,用法与join雷同,右毗连和全外链接在1.0版本上不支撑,凡是来说有这两个连系查询的方式根基够用了,1.1版本貌似添加了右毗连和全外毗连的支撑,可是目前只是预览版

因为sqlalchemy-migrate在2011年发布了0.7.2版本后,就曾经遏制更新了,而且曾经不维护了,也堆集了良多bug,而alembic是较后来才呈现,并且是sqlalchemy的作者开辟的,有优良的社区支撑,所以在这里只进修alembic这个库

alembic实现了雷同git/svn的版本办理的节制,我们能够通过alembic维护每次升级数据库的版本

默认环境下建立的是基于单个数据库的,若是需要支撑多个数据库或其他,能够通过alembic list_templates查看支撑的模板

利用之前,需要设置装备摆设一下链接字符串,打开alembic.ini文件,设置sqlalchemy.url毗连字符串,例如

该python模块包含upgrade和downgrade两个方式,在这里添加一些新增表的逻辑

上面我们是通过API升级和降级,我们也能够间接通过元数据更新数据库,也就是主动生成升级代码,先定义两个Model(User,Role),这里我定义成三个文件

因为我没有定义account模子,会被识别为删除,若是删除了model的列的声明,则会被识别为删除列,主动生成的版本我们也能够本人点窜,然后施行升级号令即可升级alembic upgrade head

Base.metadata声明的类必需以数据库中的逐个对应,若是数据库中有的表,而在元数据中没有,会识别成删除表 revision建立版本之前施行之前需要升级到最新版本 设置装备摆设Base之前,需要包管所有的Model都曾经施行(即导入)过一次了,不然无法读取到,也就是需要把所有Model都import进来

数据库升级有风险,升级前最好先查抄一遍upgrade函数,能够的话做好备份哈

若是利用mysql数据库,String类型对应的是VARCHAR类型,需要指定长度,不然会报下面错误,而在sqlite不会呈现

“是时候热起来了。”在谈及自2014年好景不常的聪慧社区使用时,安防从业人士老黄说道,“此…[细致]

每日头条、业界资讯、热点资讯、八卦爆料,全天跟踪微博播报。各类爆料、黑幕、花边、资讯一扫而光。百万互联网粉丝互动参与,TechWeb官方微博等候您的关心。

退出移动版