全部博文(2065)
分类: Python/Ruby
2010-04-20 22:37:19
SQLObject模块笔记
下载URL值:
Python 最好的对象关系映射工具是 SQLObject。类似于JAVA中的Hib框架。
对象关系映射是这两个世界的桥梁。它允许您定义与数据库表对应的类。然后您可以使用这些类及其实例上的方法来与数据库交互,而不用编写 SQL。使用对象关系映射并不意味着不需要知道关系数据库如何工作,而是不必要编写 SQL,从而避免编程错误。
清单1.连接MySQL数据库信息的代码
import sqlobject
from sqlobject.mysql import builder
conn =
builder()(user='root',password='123',host='localhost',db='test')
不管连接哪种数据库,连接代码都应该放置在一个名称类似
Connection.py 的文件中,且该文件存储在一些通常可访问的位置中。这样,可以导入您定义的所有类,并使用已经构建的 conn 对象。conn 变量将包含所有与数据库相关的详细信息。
笔记:在ASP或PHP代码中也是一样的将连接对象创建放于这种公共代码中。
定义模式:
1、
创建表的SQL语句
CREATE TABLE `phone_number` (
`id` int(11) NOT
NULL auto_increment,
`number` char(50)
default NULL,
`owner` char(50)
default NULL,
`last_call` date
default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
使用类的方法如下:
import sqlobject
from connection import conn #定义连接对象
class phoneNumber(sqlobject.SQLObject):
_connection =
conn #将连接对象设置为私有变量类型
number =
sqlobject.StringCol(length = 14,unique = True)#字段名
owner =
sqlobject.StringCol(length = 255)
lastCall =
sqlobject.DateTimeCol(default = None)
phoneNumber.createTable(ifNotExists = True) #创建表的方法
2、
处理旧的CRUD(即Insert update select delete)
2.1 创建即Insert语句
from test import phoneNumber #导入进来这个Model对象进来
myphone = phoneNumber(number='555-1222',owner='Lenoard')
2.2 做select操作
from test import phoneNumber
print phoneNumber.select(phoneNumber.q.id==1)[0]
表示对phone_number表的id字段做查询。SQLObject可以做== != < > >= 操作的。
from test import phoneNumber
print phoneNumber.select(phoneNumber.q.id<2)[0]
from test import phoneNumber
print phoneNumber.select(phoneNumber.q.owner ==
'415').count()
做AND OR查询
from test import phoneNumber
from sqlobject import AND,OR
print
phoneNumber.select(OR(phoneNumber.q.owner ==
'415',phoneNumber.q.owner=='a')).count()
2.3 更新即做 UPDATE操作
现在这种ORM框架实在太多。了解一下即可不建议专用它。还是用Django自带的Model要好些