前言python
最近一段時間除了忙於工做以外,在業餘時,迷上了python,對它的跨平臺深深的吸引。通過一段時間的自我學習,瞭解了其基本的語法,便開始本身着手擺弄起來。主要想把之前對接的接口再實現一次,以便於在作中發現問題,解決問題。只看不作,沒有實際的操練,永遠都是紙上談兵。在此過程當中遇到了許多問題,經過不斷查詢資料和請教基本完善了功能。現將自我以爲比較重要的部分拿出來和你們一塊兒探討一下,也順便本身對此作個記錄!mysql
模擬Http請求sql
在請求別人接口時,咱們最常使用的是模擬Http請求。在python中有許多方式,我選用了新版的httplib2。有興趣的能夠查看一下其餘文檔。 數據庫
# encoding: utf-8 __author__ = 'changyang' ''' @author: changyang @software: PyCharm @file: httphelper.py @time: 2015/12/14 10:48 @function:http請求操做 ''' import httplib2,json #get def get(url): return handler(url,None,'GET') #post def post(url,data): return handler(url,data,'POST') #統一處理http函數 def handler(url,data,method): try: httpClient=httplib2.Http() headers = {"Content-type": "application/x-www-form-urlencoded", "Accept": "text/plain"} if data!=None: data=json.dumps(data) response,content=httpClient.request(uri=url,method=method,body=data,headers=headers) return content.decode('utf-8') except Exception as e: print(e) if __name__=='__main__': print('choice http method...')
Mysql數據庫訪問類json
因爲使用.net習慣了,還真不知道怎樣描述,你們理解意思就行。是在不知道怎樣說了,直接上代碼。數組
# encoding: utf-8 __author__ = 'changyang' ''' @author: changyang @software: PyCharm @file: mysql_helper.py @time: 2015/12/24 16:15 @function:數據庫訪問幫助類 ''' import mysql.connector class MySqlHelper(object): def __init__(self,config_mysql): self.create_connector(config_mysql) #建立數據庫鏈接 def create_connector(self,config_mysql): try: self.connector= mysql.connector.connect( host=config_mysql['host'], user=config_mysql['user'], password=config_mysql['password'], database=config_mysql['database'], port=config_mysql['port'], charset='utf8', buffered=True ) self.cursor=self.connector.cursor(buffered=True) except Exception as e: print('myql connector is error:%s' % e) #插入單條信息,parameters爲元組,sql語句中的佔位符必須與參數的順序相同,且sql語句中以‘%s’進行佔位 def insert(self,sql,parameters): try: if sql==None or sql=='': return 0 self.cursor.execute(sql,parameters) self.connector.commit() return self.cursor.rowcount except Exception as e: print('insert is error:%s' % e) finally: self.cursor.close() self.connector.close() #一次性插入多條數據,parameters爲數組,每一個元素都是一個元組,元組內容的順序必須與sql語句中的佔位符相同,且sql語句中以‘%s’進行佔位 def multiinsert(self,sql,parameters): try: if sql==None or sql=='': return 0 self.cursor.executemany(sql,parameters) self.connector.commit() return self.cursor.rowcount except Exception as e: print('multiinsert is error:%s' % e) finally: self.cursor.close() self.connector.close() #分頁查詢,parameters爲元組,sql語句中的佔位符必須與參數的順序相同,且sql語句中以‘%s’進行佔位 #可用於分頁查詢,可是須要在sql語句中進行分頁 def findlimit(self,sql,parameters,size): try: if sql==None or sql=='': return 0 self.cursor.execute(sql,parameters) allcount=self.cursor.rowcount list=None if size!=0: list= self.cursor.fetchmany(size) else: list= self.cursor.fetchall() return list,allcount except Exception as e: print('findlimit is error:%s' % e) finally: self.connector.commit() self.cursor.close() self.connector.close() #查詢所有,parameters爲元組,sql語句中的佔位符必須與參數的順序相同,且sql語句中以‘%s’進行佔位 def findall(self,sql,parameters): return self.findlimit(sql,parameters,0)
這裏我使用了配置文件,便於後期管理,其實說白了,也就是一個數組。直接上配置 app
configs_mysql={ 'host':'ip地址', 'user':'帳號', 'password':'密碼', 'database':'數據庫', 'port':端口號 }
其餘比較重要的訪問類函數
xml和json相互轉化:post
# encoding: utf-8 __author__ = 'changyang' ''' @author: changyang @software: PyCharm @file: json_to_xml.py @time: 2015/12/15 9:57 @function:json轉化爲xml ''' import xmltodict,json #xml轉化爲json def xml_to_json(str): if str=='': raise 'str is null' str=xmltodict.parse(str) return json.dumps(str) #json轉化爲xml def json_to_xml(str): if str=='': raise 'str is null' str={ 'Ticket':json.loads(str) } return xmltodict.unparse(str,encoding='utf-8',full_document=True) if __name__=='__main__': xml = """ <student> <stid>10213</stid> <info> <name>name</name> <mail>xxx@xxx.com</mail> <sex>male</sex> </info> <course> <name>math</name> <age>90</age> </course> <course> <name>english</name> <age>88</age> </course> </student> """ result=xml_to_json(xml) print(result) print(json_to_xml(result))
文件操做學習
# encoding: utf-8 __author__ = 'changyang' ''' @author: changyang @software: PyCharm @file: file_helper.py @time: 2015/12/15 8:49 @function:文件操做 ''' import sys,time,os,shutil #保存xml文件並寫入內容 def save(path_type,filename,content): try: path=get_common_path(path_type) if not os.path.exists(path): os.makedirs(path) filename='%s\%s' % (path,filename) if os.path.exists(filename): os.remove(filename) with open(filename, "w",encoding='utf-8') as f: f.write(content) except Exception as e: print(e) #移除文件類型下的全部文件 def remove(path_type): try: path=get_common_path(path_type) if os.path.exists(path): shutil.rmtree(path,True) except Exception as e: print(e) #獲取當前門票xml路徑 def getpath(xml,path_type): return get_common_path(path_type,xml)
2015的最後總結
2015有許多未完成的,還有一些已經完成的。在本身生日這天,訂了車,算是走出了第一步。此後一直堅持給母親每月打錢回去,開始存錢準備買房的艱辛道路。在這年中,還有許多該看的書未完成,還有許多值得提高的地方還在進行中。一直對數據比較感興趣,因此最近一直在自學python。也許本身有一些底子,但只能說是舉一反三吧。還有待本身去多加實踐。我是一個不善言辭的人,也不知道該說些什麼,只是按照本身的目前,一步一步走下去的,相信不會讓本身失望的。
2016,加油!