免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2479 | 回复: 0
打印 上一主题 下一主题

SQLAlchemy学习篇 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-07-31 17:49 |只看该作者 |倒序浏览
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.
4.2   创建表格
users_table=Table('user',metadata,
...     Column('user_id',Integer,primary_key=True),
...     Column('user_name',String(40)),
...     Column('password',String(10))
... )
通过使用元数据来定义这个新表出来!
10.
4.3   插入记录
插入记录是通过表格对象的insert()方法实现的,这将会定义一个子句对象(clause  object)
(就是CluseElement)来代理INSERT语句:
i.execute(user_name='Mary',password='secure')
11.
4.4   查询
s=users_table.select()
r=s.execute()
r.fetchone()
r.fetchall()
12.使用ORM,你可以将表格(和其他可以查询的对象)同Python联系起来,放入映射集(Mappers)当中。
然后你可以执行查询并返回 对象实例  列表,而不是结果集。
对象实例 也被联系到一个叫做 Session 的对象,确保自动跟踪对象的改变,
并可以使用  flush 立即保存结果。
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/84280/showart_2014534.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP