SQLAlchemy之mysql使用手册
来源:互联网 发布:葫芦侠数据不存在 编辑:程序博客网 时间:2024/05/21 09:51
转载自:http://blog.csdn.net/counsellor/article/details/60139569
【前言】
使用python处理mysql数据库相关的业务,一般都是使用库MySQLdb直接调用sql语句。感觉很low,换一个SQLAlchemy上手。不但是耍酷,之前些flask代码时就很惊讶基本看不到对数据库的操作,其使用的就是修改过的SQLAlchemy,好处是直接操作数据库表对象,即ORM对象关系映射管理,性能会慢些,但在1-2倍的时间,在可以接受的范围。
安装
- 1
- 2
- 3
生成models
方法一: 自己根据SQLAlchemy的docs写model,比如一对多,多对一等复杂的表模型。(SQLAlchemy的文档非常详细,就跟天书一样,真心懒得看。还是flask-sqlalchemy的文档简洁明了,可以参考的)
方法二: 使用sqlacodegen从数据库逆向出models.py
- 1
- 2
这里需要注意下,使用–noviews, –noconstraints, –noindexes,这3个选项是去掉视图,约束和所以,基本用不到。反之,不去带着些文件结构的话可能会报错,比如views找不到数据。
数据库表-User
对应的models.py
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
基本使用
首先要创建engine,它代表一种数据库连接资源。可以通过engine船舰connect和session完成事务的提交。对于使用os.fork或者multiprocessing的多进程应用来说,通常需要为紫禁城提供单独的engine。
mysql:
- 1
- 2
- 3
- 4
sqlite:
- 1
查询记录
那么我们怎么从数据库中查询数据?为此,SQLAlchemy 在您的 Model 类上提供了 query 属性。当您访问它时,您会得到一个新的所有记录的查询对象。在使用 all() 或者 first() 发起查询之前可以使用方法 filter() 来过滤记录。如果您想要用主键查询的话,也可以使用 get()。
connect:
- 1
- 2
- 3
- 4
- 5
Session:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
使用更复杂的表达式查询一些用户:
- 1
- 2
按某种规则对用户排序:
- 1
- 2
限制返回用户的数量:
- 1
- 2
用主键查询用户:
- 1
- 2
打印查询结果的全部元素:
- 1
- 2
插入记录
插入记录ret = session.add()
,其中ret的值永远是none,不用看。
Session:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
删除记录
删除记录是十分类似的,使用 delete() 代替 add():
- 1
- 2
更改记录
基本思路是先filter到需要的行集合,再修改里面的值。这里有4种方式:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
事务
事物就是有一系列动作一气呵成,如果中间失败了,前面的动作不会生效。满足ACID特性。
最简单的例子就是转账,我给你转10块钱后台需要做两件事,先在我账户中减去10,再在你的账户里加10。想想如果这件事不用事务处理,我卡里减了10块钱,而转你钱没有成功,这十块钱就莫名消失了哈。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
参考文献
stackoverflow.com: Convert sqlalchemy row object to python dict
- SQLAlchemy之mysql使用手册
- SQLAlchemy之mysql使用手册
- mysql使用手册
- mysql使用手册
- mysql使用手册
- MYSQL使用手册
- MySQL使用手册
- sqlalchemy-连接mysql数据库
- mysql and sqlalchemy
- SQLAlchemy+MySQL入门
- Python SQLAlchemy MySQL ORM
- 【mysql】sqlalchemy 对象状态
- 使用SQLAlchemy连接MySQL
- python之SQLAlchemy
- python orm 之 sqlalchemy
- python操作之SQLAlchemy
- Python3 ORM之 sqlalchemy
- python之sqlalchemy使用
- Eclipse& Scilab& no javasci in java.library.path
- 第一个汇编语言程序
- 如何为自己的双目系统选取相机?
- 递归(Recursion)的两种优化方法
- CodeForces
- SQLAlchemy之mysql使用手册
- React小白入门---环境安装
- IT行业风投
- iptables详解
- 删除数组最后一项,不在原数组操作
- 访问者模式
- JavaWeb之过滤器实现统一编码案例
- 刷新购物车的操作以及创建订单
- 初窥ajax(二) ——封装jsonp