python sqlalchemy更简单的用法
2015-01-18 21:50
309 查看
前期我发表过一篇文章:python sqlalchemy的简单用法,后来又看了很多sqlchemy的新版本文档,发现自己那篇文章里讲的方法很多代码都是画蛇添足,还有更简单的用法。
我们应用的场景依然是你的数据库表是已经建立好的,只是想用python操作数据库(增、删、查、改等),但不涉及建表、主外键关系等内容(因为这些内容一般都是直接用SQL)。
简单定义了两个类之后,不用关心数据表的内部实现,sqlalchemy会实现自动的映射,随后手册上的很多操作都可以正常使用了。[/code]
MISC-lazy connecting[/code]
create_engine
按照手册上的说法是lazy_connecting,当你在create_engine的时候并不会真正的建立数据库连接,而当第一次进行数据库相关操作的时候才会真正建立连接。
我们应用的场景依然是你的数据库表是已经建立好的,只是想用python操作数据库(增、删、查、改等),但不涉及建表、主外键关系等内容(因为这些内容一般都是直接用SQL)。
类的映射
比如我用来存储用户信息的sqlite数据库 (test.db) 结构是这样的:create table if not exists users ( id integer primary key, name varchar(20), password varchar(20) );
sqlalchemy 0.9.1 之后增加了一种automap_base的机制,可以使现成的数据库中的数据结构反射到类上。用来访问上述数据库中的表只需要简单几句就可以完成映射:
import sqlalchemy from sqlalchemy.orm import Session from sqlalchemy.ext.automap import automap_base if __name__ == "__main__": engine_str = 'sqlite:///:test.db' engine = sqlalchemy.create_engine(engine_str) session = Session(engine) # 下面这两句话就完成了ORM映射 Base.classes.XXXX即为映射的类 # Base.metadata.tables['XXX']即为相应的表 Base = automap_base() Base.prepare(engine, reflect = True) # 查询操作 result = session.query(Base.classes.users).all() # 插入操作 item = Base.classes.users(name='lxq', password='1234') session.add(item) session.commit() session.close()
简单定义了两个类之后,不用关心数据表的内部实现,sqlalchemy会实现自动的映射,随后手册上的很多操作都可以正常使用了。[/code]
数据修改
ORM系统对数据库中访问到的每一行数据会映射为一个唯一的Table对象,因此,当需要对数据修改的时候,找到这行数据然后直接改其元素然后commit即可。ed_user = session.query(User).filter_by(name='ed').first() ed_user.name = 'love' session.commit()
批量插入
利用单纯的ORM方式进行大批量的插入数据,由于是调用多条INSERT语句,因此效率十分低下,session.add_all函数实际上也是调用了多条INSERT语句,如果想批量插入数据,可以进行如下处理:engine.execute(User.__table__.insert(), [{'name':'hello', 'password':'1234'}, {'name':'hello2', 'password':'1234'}])
MISC-lazy connecting[/code]
create_engine
按照手册上的说法是lazy_connecting,当你在create_engine的时候并不会真正的建立数据库连接,而当第一次进行数据库相关操作的时候才会真正建立连接。
相关文章推荐
- python sqlalchemy的简单用法
- python中的hashlib模块简单用法
- Urllib.request用法简单介绍(Python3.3)
- python beautifulsoup简单用法
- Python中内建函数的简单用法说明
- Python学习笔记2-flask-sqlalchemy 简单笔记
- SQLAlchemy 的简单用法
- 常见python正则用法的简单实例
- python的argv最简单的用法
- Python 元组简单用法
- python基础教程之分支、循环简单用法
- Python ORM框架SQLAlchemy学习笔记之安装和简单查询实例
- python中while循环语句用法简单实例
- python简单的函数定义和用法实例
- python的argv最简单的用法
- python定时器(Timer)用法简单实例
- python 中生成器的简单介绍及用法
- 简单说明Python中的装饰器的用法
- python简单的函数定义和用法实例
- 举例简单讲解Python中的数据存储模块shelve的用法