Chryypy MySQLデータベース環境構築へのアクセス

9704 ワード


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 No
  
7、プログラムソース:
 
import cherrypy
 
class HelloWorld(object):
    def index(self):
        return "Hello World!"
    index.exposed = True
 
cherrypy.quickstart(HelloWorld())

次に、ブラウザのアドレスバーを入力します.http://localhost:8080/出力を見たらハローワールド!環境構築が成功したことを証明します.
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(''+'/n')
                    xml.write(''+'/n')
                    for row in cds:  
                        for r in row:  
                            xml.write('  '+''+date+''+'/n')
                            xml.write('  '*2+''+str(r)+''+'/n')
                            dataFlag = 1
                    xml.write('
'+'/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(''+'/n')
                    xml.write(''+'/n')
                    xml.write('  '+''+'/n')
                    i = 0
                    for row in cds:  
                        for r in row:
                            if i%2==0:
                                xml.write('  '*2+''+str(r)+''+'/n')
                                i=i+1
                            else:
                                xml.write('  '*3+''+str(r)+''+'/n')
                                i=i+1
                                dataFlag = 1
                    xml.write('  '+'
'+'/n')          
                    xml.write('
'+'/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(''+'/n')
                    xml.write(''+'/n')
                    xml.write('  '+''+'/n')
                    i = 0
                    for row in cds:  
                        for r in row:
                            if i%2==0:
                                xml.write('  '*2+''+str(r)+''+'/n')
                                i=i+1
                            else:
                                xml.write('  '*3+''+str(r)+''+'/n')
                                i=i+1
                                dataFlag = 1
                    xml.write('  '+'
'+'/n')
                    xml.write('
'+'/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これがその日のデータを調べることです.