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

全部博文(2065)

文章存档

2012年(2)

2011年(19)

2010年(1160)

2009年(969)

2008年(153)

分类: 系统运维

2010-06-26 12:48:11

数据以JSON组织存储

时间:2010-6-26

传统的数据表设计的时候我们是把多个字段分开进行保存数据。我想能否把多个字段进行一次合并处理。放在一个字段里面如

Oldtable : id name age sex school

Newtable:id json

测试:表结构如下

CREATE TABLE `t` (

  `id` int(11) NOT NULL auto_increment,

  `json` text,

  PRIMARY KEY  (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8

测试语言:Python

import MySQLdb

import pickle

conn = MySQLdb.connect("localhost","root","123","test",port=3306,connect_timeout=10,compress=True,charset='utf8',use_unicode=True)

cursor=conn.cursor()

content  = [{"name":"PRIVMSG","age":12,"sex":"boy","school":"middle"},

            {"name":"hkebao","age":13,"sex":"girl","school":"s"},

            {"name":"PRI","age":12,"sex":"boy","school":"middle"}            

           ]

byt2=pickle.dumps(content) //序列化处理得到一个经过序列化之后的字符串数据!

cursor.execute("insert into t(json) values(%s)",(byt2))

conn.commit()

说明:把字符串作一次序列化之后才能插入到数据库或保存到文件中去的/

现在我要读取出来:

cursor.execute("select json from t where id=1")

row = cursor.fetchone()                 #返回一条记录

json = row[0]                   #这个是经过序列化之后的字符串值的!

s=pickle.loads(str(json))         #反序列化(将其作一次反序列化处理!)

print s[0]['age']           #打印出来

 

s[0]['age'] = 144333        #提取出来之后做一次更新相当于做一次update处理了!

byt2=pickle.dumps(s)

cursor.execute("update t set json = (%s) where id=2",(byt2))

conn.commit()

 

将一条记录删除掉的方法

del s[0]

byt2=pickle.dumps(s)

cursor.execute("update t set json = (%s) where id=2",(byt2))

conn.commit()

其实操作完成是利用了序列的方法操作的。也是相当于是利用了JSON类型的数据特点进行操作的。

如字典类型的操作!

 

模拟了SIUD操作。将来的应用看一下能否将其这样进行处理吧!

 

 

阅读(1151) | 评论(0) | 转发(0) |
0

上一篇:网上学习

下一篇:今日新闻20010-06-27

给主人留下些什么吧!~~