生活随笔
收集整理的這篇文章主要介紹了
【Python】pymysql模块处理Mysql数据库
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
PyMySQL 是在 Python3.x 版本中用于連接 MySQL 服務器的一個庫,Python2中則使用mysqldb。
PyMySQL 遵循 Python 數據庫 API v2.0 規范,并包含了 pure-Python MySQL 客戶端庫。
在使用 PyMySQL 之前,我們需要確保 PyMySQL 已安裝,可以直接pip安裝:pip install pymysql
本文主要介紹了pymysql連接數據庫;刪除、創建表;將數據存儲到數據庫;查詢數據庫數據輸出到excel
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
#作者:cacho_37967865
#博客:https://blog.csdn.net/sinat_37967865
#文件:pymysqlModel.py
#日期:2018-10-22
#備注:pip install pymysql pymysql是Python中操作MySQL的模塊
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''import pymysql
import time
import xlrd
from xlutils.copy import copy
import osstart_time = time.time() #計算程序運行時間db = pymysql.connect(host="localhost",user="root",password="123456",port=3306,use_unicode=True,charset="utf8",database="sunshine")cursor = db.cursor()def createTable():sql1 = 'drop table if exists save_amount;'sql2 = 'create table save_amount(No INT(11) NOT NULL AUTO_INCREMENT,billNo VARCHAR(50),amount FLOAT DEFAULT 0.0,PRIMARY KEY (No));'cursor.execute(sql1)cursor.execute(sql2)db.commit()def get_excel_data(xlsFile):data = xlrd.open_workbook(xlsFile)table = data.sheets()[0]nrows = table.nrowssqlData = []# 獲取指定(第二B)列數據for i in range(1, nrows):billNo = table.cell_value(i, 1)try:billNo = int(billNo)billNo = str(billNo)except Exception as f:print(str(f))row = []if billNo != '' and (billNo[0:3] == '718' or billNo[0:3] == '444' or billNo[0:3] == '639'):row.append(billNo)row.append(0.0)else:continue # 不符合要求就跳過sqlData.append(row)return sqlDatadef data_to_mysql(billNo,amount):sql = "insert into save_amount(billNo,amount) values('%s','%f')" % (billNo,amount)try:# 使用 cursor() 方法創建一個游標對象 cursorcursor.execute(sql)except Exception as e:# 發生錯誤時回滾db.rollback()print(str(e))else:db.commit() # 事務提交print('事務處理成功')# 將根據對賬單Excel中數據庫查找的信息copy到一個新的excel中(不能循環)
def mysql_to_excel(xlsFile,newFile):a = 1data = xlrd.open_workbook(xlsFile, formatting_info=True)table = data.sheets()[0]nrows = table.nrowsnew_excel = copy(data)ws = new_excel.get_sheet(0)for i in range(1, nrows):billNo = table.cell_value(i, 1)cursor.execute('select billNo,amount from save_amount where billNo=%s', (billNo))results = cursor.fetchall() # 獲取多條數據# row_1 = cursor.fetchone() # 獲取一條數據for i in range(len(results)):amount = results[i][1]print(a+1,billNo,amount)ws.write(a, 11, billNo) # 12列Lws.write(a, 12, amount) # 13列Ma = a + 1new_excel.save(newFile)''''''''
def main():createTable() # 創建一個空白數據庫表sqlData = get_excel_data('F:\PythonProject\PythonLession\RecordModule\oct.xls') # 獲取對賬單里面不需要的運單for i in range(len(sqlData)):billNo = sqlData[i][0]amount = sqlData[i][1]data_to_mysql(billNo, amount)mysql_to_excel('F:\PythonProject\PythonLession\RecordModule\oct.xls', 'F:\PythonProject\PythonLession\RecordModule\oct1.xls')db.close()
''''''''''''''
if __name__ == '__main__':main()endtime = time.time() - start_timeprint('程序運行了%.2f秒' % endtime)
1.當我們需要傳參進入到sql語句時,使用方法如下:
sql = "insert into save_amount(billNo,amount) values('%s','%f')" % (billNo,amount)
%s表示字段為str類型,%f表示字段為float類型,傳參表達式:% (billNo,amount)
2.有時我們希望對原有的excel進行處理,可以復制一份excel在進行處理
from xlutils.copy import copy
data = xlrd.open_workbook(xlsFile, formatting_info=True) ?# 打開需要修改的excel
new_excel = copy(data) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?# 復制信息到新excel
ws = new_excel.get_sheet(0) ? ? ? ? ? ? ? ? ? ? ? ? ? # 獲取第一個sheet,到時候對這個sheet處理
總結
以上是生活随笔為你收集整理的【Python】pymysql模块处理Mysql数据库的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。