python操作MySQL--執行個體

來源:互聯網
上載者:User

標籤:for   遠程伺服器   pen   shell   set   ima   object   import   表頭   

   有一段時間,沒更新,但這都不是自己懶惰的借口,希望自己能堅持下去;

python可以操作MySQL 資料庫,需要安裝的是MySQL-python,並且實現讀入excel表及產生excel 表,則需要xlrd及xlwt這兩個python 模組;

1、安裝MySQL-python:

  yum -y install MySQL-python    #########在python 程式匯入模組時名字為MySQLdb

2、安裝excel兩個模組:

  pip install xlrd xlwt   ####pip 預設使用的是國外的鏡像,網速較慢,可以更換為國內的鏡像,臨時則使用 -i https://pypi.douban.com/simple/

3、以下代碼中其它的模組均為內建模組;

4、匯入excel的模板內容如下:

  第一行所有列有資料,第二行部分列有資料

 

  

1 #!/usr/bin/env python   2 #coding:utf-8   3 import MySQLdb,sys,xlwt,subprocess,datetime,xlrd,time  4 reload(sys)    #######以下兩行解決了寫excel 時中文字元的問題  5 sys.setdefaultencoding(‘utf-8‘)  6 class Mysql_Select(object):  7     def __init__(self):  8         pass  9  10     def yes_Format(self): 11         child = subprocess.Popen("date +‘%Y-%m-%d %H:%M:%S‘ -d ‘-1 days‘",shell=True,stdout=subprocess.PIPE) 12         yes_time = child.stdout.read() 13         return yes_time            ############返回前一天的日期,供Mysql 語句使用 14  15     def mysql_Connect_Status(self,date_yesterday): 16         conn = MySQLdb.connect(user=‘‘,passwd=‘‘,host=‘‘,charset=‘utf8‘) 17         cur = conn.cursor()18          machines_status = cur.fetchmany(cur.execute("select bdass.salesOrder.orderNum,bdass.salesOrder.salesTime,bdas    s.machines.name,bdass.salesOrder.goodsCode,bdass.salesOrder.salesPrice from bdass.salesOrder,bdass.machines where bda    ss.salesOrder.salesTime > ‘%s‘ and bdass.salesOrder.machineId = bdass.machines.clientId "%date_yesterday)) 19         cur.close() 20         conn.close() 21         return machines_status        #############查詢生產伺服器的Mysql的表 22  23     def excel_Read(self,machines_status): 24         W=xlwt.Workbook(‘utf8‘)       #########建立一個excel寫對象 25         ws = W.add_sheet(‘Sheet1‘)    #########增加一個sheet 26         ws.col(0).width = 9999         ##########表格的列屬性 27         ws.col(1).width = 6666 28         ws.col(20).width = 6666 29         ws.col(43).width = 6666 30         ws.col(44).width = 6666 31         ws.col(45).width = 6666 32         ws.col(65).width = 9999 33         ws.col(103).width = 6666 34         ws.col(104).width = 6666 35         module_data = xlrd.open_workbook(‘sales_module.xls‘)   #######建立一個excel讀對象  36       table = module_data.sheet_by_index(0)    #########讀取第一個sheet 37         ncols = table.ncols                      #########表的所有列 38         for raws in xrange(len(machines_status)): ############## 寫模板裡的固定值; 39             for values in xrange(ncols): 40                 if values not  in [0,1,20,43,44,45,53,54,55,56,57,59,65,103,104]: 41                     ws.write(raws+1,values,label=table.cell(1,values).value) 42  43         for values in xrange(ncols):  ##############寫模板的第一行 44             ws.write(0,values,label=table.cell(0,values).value) 45  46         for raw in xrange(len(machines_status)): ###########寫訂單的資料; 47             ws.write(raw+1,0,label=machines_status[raw][0])  #訂單號 48             ws.write(raw+1,1,label=str(machines_status[raw][1]).split(‘ ‘)[0])  #訂單日期 49             ws.write(raw+1,20,label=machines_status[raw][2])    #表頭備忘 50             ws.write(raw+1,43,label=str(machines_status[raw][1]).split(‘ ‘)[0]) #表頭預發貨日期 51             ws.write(raw+1,44,label=str(machines_status[raw][1]).split(‘ ‘)[0]) #表頭預完工日期  52             ws.write(raw+1,45,label=str(machines_status[raw][3]))   #存貨編碼 53             ws.write(raw+1,53,label=str(machines_status[raw][4]))   #報價54              ws.write(raw+1,53,label=str(machines_status[raw][4]))   #報價 54             ws.write(raw+1,54,label=str(machines_status[raw][4]))   #含稅單價 55             ws.write(raw+1,55,label=str(machines_status[raw][4] - round(machines_status[raw][4]/1.17*0.17,2)))  #金額    _原幣_無稅 56             ws.write(raw+1,56,label=str(‘%.2f‘ %(machines_status[raw][4]/1.17*0.17)))   #稅額 57             ws.write(raw+1,57,label=str(machines_status[raw][4]))   #價稅合計 58             ws.write(raw+1,59,label=str(machines_status[raw][4] - round(machines_status[raw][4]/1.17*0.17,2)))  #無稅    _單價 59             ws.write(raw+1,65,label=str(machines_status[raw][0]))   #備忘 60             ws.write(raw+1,103,label=str(machines_status[raw][1]).split(‘ ‘)[0])    #預完工日期 61             ws.write(raw+1,104,label=str(machines_status[raw][1]).split(‘ ‘)[0])    #預發貨日期 62  63         W.save(‘模板產生.xls‘)    ########最後儲存並命名 64  65  66     def copy_Remote(self):          #####傳送到遠程伺服器 67         child = subprocess.Popen("scp -P 7777 模板產生.xls server_net:/share/技術/",shell=True,stdout=subprocess.PIPE    ) 68  69 system = Mysql_Select()70 if __name__ == ‘__main__‘: 71     yes_time = system.yes_Format() 72     machines_status = system.mysql_Connect_Status(yes_time) 73     system.excel_Read(machines_status) 74     system.copy_Remote()




最後程式碼完成並產生的excel表如下:

 

 

 

代碼部分,還有待最佳化,加油;


 

python操作MySQL--執行個體

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.