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 立即保存结果。
阅读(935) | 评论(0) | 转发(0) |