Chryypy访问MySQL数据库环境搭建
1、 安装python-2.6.1.msi
2、 CherryPy-3.0.0beta.win32.exe
3、 MySQL-python-1[1].2.2.win32-py2.6.exe
4、 mysql-essential-5.1.31-win32.zip
5、 MySQL图形化管理工具Navicat+8[1].0汉化破解版.rar
依次安装完上述软件后,一个基本的chryypy的环境就算搭建完毕。
再进行简单的测试:运行下面的脚本,
6、 数据库表设计
名 类型 主键
Date date 是
Value char 否
7、程序源代码:
import cherrypy
class HelloWorld(object):
def index(self):
return "Hello World!"
index.exposed = True
cherrypy.quickstart(HelloWorld())
然后再浏览器的地址栏输入:http://localhost:8080/若看到输出HelloWorld!则证明环境搭建成功。
Cherrpy的Rest化访问数据库例子:
# -*- coding: cp936 -*-
import cherrypy
import MySQLdb
class Web:
def default(self,year='',month='',day=''):
#数据库连接
conn = MySQLdb.Connection('127.0.0.1', 'root', '123', 'test')
cursor = conn.cursor()
#判断有无数据
dataFlag = 0
self.y=year
self.m=month
self.d=day
if self.y!='':
#输出xml文件
xml=file('data.xml','w')
if self.m!='':
if self.d!='':
#年、月、日全部输全时查询的是当天的数据
date = '-'.join([self.y,self.m,self.d])
sql = "select Value from test where Date = '%s'" %date
cursor.execute(sql)
cds = cursor.fetchall()
xml.write('<?xml version="1.0" ?>'+'/n')
xml.write('<xml>'+'/n')
for row in cds:
for r in row:
xml.write(' '+'<date>'+date+'</date>'+'/n')
xml.write(' '*2+'<value>'+str(r)+'</value>'+'/n')
dataFlag = 1
xml.write('</xml>'+'/n')
xml.close()
cursor.close()
conn.close()
if dataFlag == 1:
return self.y,'年',self.m,'月',self.d,'日的数据已经写入data.xml'
else:
return self.y,'年',self.m,'月',self.d,'日没有数据!'
#只输入年、月时查询的当月的数据
else:
date = '-'.join([self.y,self.m])
sql = "select * from test where Date like '%s%%'" %date
cursor.execute(sql)
cds = cursor.fetchall()
xml.write('<?xml version="1.0" ?>'+'/n')
xml.write('<xml>'+'/n')
xml.write(' '+'<month id='+"'"+date+"'"+'>'+'/n')
i = 0
for row in cds:
for r in row:
if i%2==0:
xml.write(' '*2+'<date>'+str(r)+'</date>'+'/n')
i=i+1
else:
xml.write(' '*3+'<value>'+str(r)+'</value>'+'/n')
i=i+1
dataFlag = 1
xml.write(' '+'</month>'+'/n')
xml.write('</xml>'+'/n')
xml.close()
cursor.close()
conn.close()
if dataFlag == 1:
return self.y,'年',self.m,'月的数据已经写入data.xml'
else:
return self.y,'年',self.m,'月没有数据!'
else:
#只输入年份时查询的是全年的数据
sql = "select * from test where Date like '%s%%'" %self.y
cursor.execute(sql)
cds = cursor.fetchall()
xml.write('<?xml version="1.0" ?>'+'/n')
xml.write('<xml>'+'/n')
xml.write(' '+'<year id='+"'"+self.y+"'"+'>'+'/n')
i = 0
for row in cds:
for r in row:
if i%2==0:
xml.write(' '*2+'<date>'+str(r)+'</date>'+'/n')
i=i+1
else:
xml.write(' '*3+'<value>'+str(r)+'</value>'+'/n')
i=i+1
dataFlag = 1
xml.write(' '+'</year>'+'/n')
xml.write('</xml>'+'/n')
xml.close()
cursor.close()
conn.close()
if dataFlag == 1:
return self.y,'年的数据已经写入data.xml'
else:
return self.y,'年没有数据!'
else:
return '请输入要查询数据的时间!'
default.exposed = True
class Application:
data = Web()
if __name__ == '__main__':
cherrypy.root = Application()
cherrypy.quickstart(cherrypy.root)
运行上面的程序后,就是启动了服务器。
然后进行查询访问:例如http://localhost:8080/data/2009/03/03这样就是查询当天的数据。