今天就跟大家聊聊有关Python数据库ORM工具sqlalchemy怎么安装使用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。SQLAlchemy是python的一个数据库ORM工具,提供了强大的对象模型间的转换,可以满足绝大多数数据库操作的需求,并且支持多种数据库引擎(sqlite,mysql,postgres, mongodb等),在这里记录基本用法和学习笔记。一、安装通过pip安装二、使用首先是连接到数据库,SQLALchemy支持多个数据库引擎,不同的数据库引擎连接字符串不一样,常用的有更多连接字符串的介绍参见这里下面是连接和使用sqlite数据库的例子1. connection使用传统的connection的方式连接和操作数据库与python自带的sqlite不同,这里不需要Cursor光标,执行sql语句不需要commit2. connection事务使用事务可以进行批量提交和回滚3. sessionconnection是一般使用数据库的方式,sqlalchemy还提供了另一种操作数据库的方式,通过session对象,session可以记录和跟踪数据的改变,在适当的时候提交,并且支持强大的ORM的功能,下面是基本使用上面创建了一个session对象,接下来可以操作数据库了,session也支持通过sql语句操作数据库注意参数使用dict,并在sql语句中使用:key占位4. ORM上面简单介绍了sql的简单用法,既然是ORM框架,我们先定义两个模型类User和Role,sqlalchemy的模型类继承自一个由declarative_base()方法生成的类,我们先定义一个模块Models.py生成Base类User.pyRole.py从上面很容易看出来,这里的模型对应数据库中的表,模型支持的类型有Integer, String, Boolean, Date, DateTime, Float,更多类型包括类型对应的Python的类型参见:这里Column构造函数相关设置name:名称type_:列类型autoincrement:自增default:默认值index:索引nullable:可空primary_key:外键更多介绍参见这里接下来通过session进行增删改查5. 多表关系上面的所有操作都是基于单个表的操作,下面是多表以及关系的使用,我们修改上面两个表,添加外键关联(一对多和多对一)User模型Role模型这里有一点需要注意的是,设置外键的时候ForeignKey(‘roles.id’)这里面使用的是表名和表列,在设置关联属性的时候relationship(‘Role’, foreign_keys=’User.role_id’, backref=’User_role_id’),这里的foreign_keys使用的时候类名和属性名接下来就可以使用了上面表示的是一对多(多对一)的关系,还有一对一,多对多,如果要表示一对一的关系,在定义relationship的时候设置uselist为False(默认为True),如在Role中6. 多表查询多表查询通常使用join进行表连接,***个参数为表名,第二个参数为条件,例如join为内连接,还有左连接outerjoin,用法与join类似,右连接和全外链接在1.0版本上不支持,通常来说有这两个结合查询的方法基本够用了,1.1版本貌似添加了右连接和全外连接的支持,但是目前只是预览版还可以直接查询多个表,如下三、数据库迁移sqlalchemy的数据库迁移/升级有两个库支持alembic和sqlalchemy-migrate由于sqlalchemy-migrate在2011年发布了0.7.2版本后,就已经停止更新了,并且已经不维护了,也积累了很多bug,而alembic是较后来才出现,而且是sqlalchemy的作者开发的,有良好的社区支持,所以在这里只学习alembic这个库alembic实现了类似git/svn的版本管理的控制,我们可以通过alembic维护每次升级数据库的版本1. 安装通过pip安装,pip会自动安装相关的依赖2. 初始化安装完成后再项目根目录运行其中alembic.ini 提供了一些基本的配置env.py 每次执行Alembic都会加载这个模块,主要提供项目Sqlalchemy Model 的连接script.py.mako 迁移脚本生成模版versions 存放生成的迁移脚本目录默认情况下创建的是基于单个数据库的,如果需要支持多个数据库或其他,可以通过alembic list_templates查看支持的模板3. 配置使用之前,需要配置一下链接字符串,打开alembic.ini文件,设置sqlalchemy.url连接字符串,例如其他参数可以参见官网说明:http://alembic.zzzcomputing.com/en/latest/tutorial.html4. 创建数据库版本接下来我们创建一个数据库版本,并新建两个表创建一个版本(会在yourproject/YOUR_ALEMBIC_DIR/versions/文件夹中创建一个python文件1a8a0d799b33_create_table.py)该python模块包含upgrade和downgrade两个方法,在这里添加一些新增表的逻辑这里使用到了了op对象,关于op对象的更多API使用,参见这里5. 升级数据库刚刚实现了升级和降级的方法,通过下面命令升级数据库到***版本这时候可以看到数据库多了两个表alembic_version和account,alembic_version存放数据库版本关于升级和降级的其他命令还有下面这些6. 通过元数据升级数据库上面我们是通过API升级和降级,我们也可以直接通过元数据更新数据库,也就是自动生成升级代码,先定义两个Model(User,Role),这里我定义成三个文件代码就放在一起了在YOUR_ALEMBIC_DIR/env.py配置元数据改为os.path.join(os.getcwd()这个获取到的地址不是env.py的路径,而是根目录在创建数据库版本的时候添加–autogenerate参数,就会从Base.metadata元数据中生成脚本这时候会在生成升级代码由于我没有定义account模型,会被识别为删除,如果删除了model的列的声明,则会被识别为删除列,自动生成的版本我们也可以自己修改,然后执行升级命令即可升级alembic upgrade head需要注意的是Base.metadata声明的类必须以数据库中的一一对应,如果数据库中有的表,而在元数据中没有,会识别成删除表revision创建版本之前执行之前需要升级到***版本配置Base之前,需要保证所有的Model都已经执行(即导入)过一次了,否则无法读取到,也就是需要把所有Model都import进来数据库升级有风险,升级前***先检查一遍upgrade函免费云主机、域名数,可以的话做好备份哈四、常见问题1. String长度问题如果使用mysql数据库,String类型对应的是VARCHAR类型,需要指定长度,否则会报下面错误,而在sqlite不会出现看完上述内容,你们对Python数据库ORM工具sqlalchemy怎么安装使用有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注云技术行业资讯频道,感谢大家的支持。
本篇内容主要讲解“yarn的bug问题怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“yarn的bug问题怎么解决”吧!最近接手的几个项目包管理器用的是 yarn@v1.22.19,在安装依赖后无论是否成功,…