能同时使用python sqlobjectt 和django吗

第三方登录:页面导航:
→ 正文内容 Python SQLObject入门实例
Python的ORM框架SQLObject入门实例
这篇文章主要介绍了Python的ORM框架SQLObject简单使用实例,使用Linux Mint 15、Python 2.7,需要的朋友可以参考下
SQLObject和SQLAlchemy都是Python语言下的ORM(对象关系映射)解决方案,其中SQLAlchemy被认为是Python下事实上的ORM标准。当然,两者都很优秀。
一、安装 代码如下:sudo pip install SQLObject使用SQLObject操作mysql时候报错ImportError: No module named MySQLdb,那便安装MySQLdb: 代码如下:sudo pip install MySQL-python没想到又报错了: 代码如下:_mysql.c:29:20: fatal error: Python.h: No such file or directorycompilation terminated.error: command 'x86_64-linux-gnu-gcc' failed with exit status 1解决方法: 代码如下:sudo apt-get install libmysqlclient-dev python-dev二、使用其创建表
将mysql默认存在的test数据库的编码改为utf-8。 代码如下:#-*-encoding:utf-8-*-from sqlobject import *
uri = r'mysql://root:passwd@127.0.0.1/test?charset=utf8'sqlhub.processConnection = connectionForURI(uri)
class User(SQLObject):&&& name = StringCol(length=10, notNone=True)&&& email = StringCol(length=20, notNone=True)&&& password = StringCol(length=20, notNone=True)
User.createTable()
运行后,会看到test数据库下出现表user,我们使用sh查看user表的创建语句,结果如下: 代码如下:CREATE TABLE `user` (& `id` int(11) NOT NULL AUTO_INCREMENT,& `name` varchar(10) NOT NULL,& `email` varchar(20) NOT NULL,& `password` varchar(20) NOT NULL,& PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8
三、添加/删除记录
现在我们尝试着添加和删除记录。 代码如下:user1 = User(name='user1',email='',password='111')user2 = User(name='user2',email='',password='222')
运行后,使用select * from user能看到这两个记录: 代码如下:mysql& select *+----+-------+---------------+----------+| id | name& | email&&&&&&&& | password |+----+-------+---------------+----------+|& 1 | user1 |
| 111&&&&& ||& 2 | user2 |
| 222&&&&& |+----+-------+---------------+----------+2 rows in set (0.00 sec)
删除数据 代码如下:u2 = User.get(2)print User.delete(u2.id)
四、查询记录
通过id获取数据: 代码如下:u1 = User.get(1)u1_1 = User.get(1)u2 = User.get(2)print id(u1), u1print id(u1_1), u1_1print id(u2), u2输出结果: 代码如下:
由于id(u1)和id(u1_1)是相等的,所以u1和u1_1是内容一致,这样做可以减少内存使用。可以在连接数据库时候设置参数,禁止该方式。
根据name进行查询: 代码如下:users = User.select(User.q.name=="user1")print usersprint list(users)输出结果: 代码如下:SELECT user.id, user.name, user.email, user.password FROM user WHERE ((user.name) = ('user1'))[]模糊查询: 代码如下:users = User.select(User.q.name.startswith('u'))print usersprint list(users)users = User.select(User.q.name.contains('ser1'))print usersprint list(users)运行结果: 代码如下:SELECT user.id, user.name, user.email, user.password FROM user WHERE (user.name LIKE ('u%') ESCAPE '\\')[, ]SELECT user.id, user.name, user.email, user.password FROM user WHERE (user.name LIKE ('%ser1%') ESCAPE '\\')[]
一对多映射
我们新建一个表,保存user中每个用户的编写的文章: 代码如下:class User(SQLObject):&&& name = StringCol(length=10, notNone=True)&&& email = StringCol(length=20, notNone=True)&&& password = StringCol(length=20, notNone=True)
class Article(SQLObject):&&& title = StringCol(length=100, notNone=True)&&& content = StringCol(notNone=True)&&& user = ForeignKey('User')Article.createTable()运行后,使用show create table article查看创建语句: 代码如下:CREATE TABLE `article` (& `id` int(11) NOT NULL AUTO_INCREMENT,& `title` varchar(100) NOT NULL,& `content` text NOT NULL,& `user_id` int(11) DEFAULT NULL,& PRIMARY KEY (`id`),& KEY `article_user_id_exists` (`user_id`),& CONSTRAINT `article_user_id_exists` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8添加数据: 代码如下:u1 = User.get(1)a1 = Article(title='title1',content='你好',user=u1)查询数据: 代码如下:u1 = User.get(1)a1 = Article.select(Article.q.user == u1)print a1print list(a1)print list(a1)[0].content这种方式也可以: 代码如下:a1 = Article.select(Article.q.userID == 1)print a1print list(a1)print list(a1)[0].content运行结果: 代码如下:SELECT article.id, article.title, article.content, article.user_id FROM article WHERE ((article.user_id) = (1))[&Article title='title1'&]你好
您可能感兴趣的文章:
上一篇:下一篇:
最 近 更 新
热 点 排 行
12345678910}

我要回帖

更多关于 django 性能 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信