概述
SQLAlchemy是Python编程语言下的一款开源软件。提供了SQL工具包及对象关系映射(ORM)工具,使用MIT许可证发行。
SQLAlchemy“采用简单的Python语言,为高效和高性能的数据库访问设计,实现了完整的企业级持久模型”。SQLAlchemy的理念是,SQL数据库的量级和性能重要于对象集合;而对象集合的抽象又重要于表和行。因此,SQLAlchmey采用了类似于Java里Hibernate的数据映射模型,而不是其他ORM框架采用的Active Record模型。不过,Elixir和declarative等可选插件可以让用户使用声明语法。
下面是一个完整ORM的例子:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
from
sqlalchemy.orm
import
mapper, sessionmaker
#sessionmaker() 函数是最常使用的创建最顶层可用于整个应用 Session 的方法,Session 管理着所有与数据库之间的会话
from
datetime
import
datetime
from
sqlalchemy
import
Table, MetaData, Column, ForeignKey, Integer, String,
Unicode
, DateTime
#会SQL的人能理解这些函数吧?
engine
=
create_engine(
"sqlite:///tutorial.db"
, echo
=
True
)
#创建到数据库的连接,echo=True 表示用logging输出调试结果
metadata
=
MetaData()
#跟踪表属性
user_table
=
Table(
#创建一个表所需的信息:字段,表名等
'tf_user'
, metadata,
Column(
'id'
, Integer, primary_key
=
True
),
Column(
'user_name'
,
Unicode
(
16
), unique
=
True
, nullable
=
False
),
Column(
'email_address'
,
Unicode
(
255
), unique
=
True
, nullable
=
False
),
Column(
'password'
,
Unicode
(
40
), nullable
=
False
),
Column(
'first_name'
,
Unicode
(
255
), default
=
''),
Column(
'last_name'
,
Unicode
(
255
), default
=
''),
Column(
'created'
, DateTime, default
=
datetime.now))
metadata.create_all(engine)
#在数据库中生成表
class
User(
object
):
pass
#创建一个映射类
mapper(User, user_table)
#把表映射到类
Session
=
sessionmaker()
#创建了一个自定义了的 Session类
Session.configure(bind
=
engine)
#将创建的数据库连接关联到这个session
session
=
Session()
u
=
User()
u.user_name
=
'dongwm'
u.email_address
=
'dongwm@dongwm.com'
u.password
=
'testpass'
#给映射类添加以下必要的属性,因为上面创建表指定这几个字段不能为空
session.add(u)
#在session中添加内容
session.flush()
#保存数据 session.commit() #数据库事务的提交,sisson自动过期而不需要关闭
query
=
session.query(User)
#query() 简单的理解就是select() 的支持 ORM 的替代方法,可以接受任意组合的 class/column 表达式 print list(query) #列出所有user print query.get(1) #根据主键显示 print query.filter_by(user_name='dongwm').first() #类似于SQL的where,打印其中的第一个 u = query.filter_by(user_name='dongwm').first() u.password = 'newpass' #修改其密码字段 session.commit() #提交事务 print query.get(1).password #打印会出现新密码
for
instance
in
session.query(User).order_by(User.
id
):
#根据id字段排序,打印其中的用户名和邮箱地址 print instance.user_name, instance.email_address
|
项目主页:http://www.open-open.com/lib/view/home/1357482850074
最后
以上就是优雅山水为你收集整理的Python的数据库ORM框架:SQLAlchemy的全部内容,希望文章能够帮你解决Python的数据库ORM框架:SQLAlchemy所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复