Chinaunix首页 | 论坛 | 博客
  • 博客访问: 26267361
  • 博文数量: 2065
  • 博客积分: 10377
  • 博客等级: 上将
  • 技术积分: 21525
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-04 17:50
文章分类

全部博文(2065)

文章存档

2012年(2)

2011年(19)

2010年(1160)

2009年(969)

2008年(153)

分类: Python/Ruby

2009-07-31 17:49:53

1. 使用cursor形式的结果集时使用的是SQL语言构造器;而使用类实例进行管理时使用的是ORM。
2. SQLAlchemy的ORM,提供了表格元信息的高层封装,允许我们随心所欲的装载和保存Python类。
3. 在SQLAlchemy的核心哲学中表格和类是不同的。
4.
5.使用 sqlalchemy 的好处就是不用写 sql 了,屏蔽不同dbms之间SQL语法的区别,同时又让你在需要的时候能够利用到不同 DBMS 提供的一些独特特性,让你以对象的方式管理数据库访问代码,提高代码重用性!
方法是说如果你想使用HIB的话就是这样的处理的!
6.类似Java的JDBC,Python也有一个类似的数据库访问接口规范,那就是DB-API(目前是2.0)
7. from sqlalchemy.engine import create_engine 2 
 3 engine = create_engine('postgres://user:pass@localhost/testdb')
 4 connection = engine.connect()
 5 connection.execute(
 6     """
 7     CREATE TABLE book
 8     (
 9       id serial NOT NULL,
10      title character varying(30) NOT NULL,
11      CONSTRAINT pk_book PRIMARY KEY (id)
12     );
13    """
14 )
这种ORM的东西也可以实现cursor这种功能的。直接在里面写上SQL语句出来!当然也可以通过映射关系处理类与数据关系之间的这种映射了!
8.
统一使用SQLAlchemy的Engine API而不是DB-API能给我们带来更大的灵活性,通常也更方便、更安全。
9.
users_table=Table('user',metadata,
... Column('user_id',Integer,primary_key=True),
... Column('user_name',String(40)),
... Column('password',String(10))
... )
通过使用元数据来定义这个新表出来!
10.
插入记录是通过表格对象的insert()方法实现的,这将会定义一个子句对象(clause object)
(就是CluseElement)来代理INSERT语句:
i.execute(user_name='Mary',password='secure')
11.
s=users_table.select()
r=s.execute()
r.fetchone()
r.fetchall()
12.使用ORM,你可以将表格(和其他可以查询的对象)同Python联系起来,放入映射集(Mappers)当中。
然后你可以执行查询并返回 对象实例 列表,而不是结果集。
对象实例 也被联系到一个叫做 Session 的对象,确保自动跟踪对象的改变,
并可以使用 flush 立即保存结果。







阅读(877) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~