使用Excel初始化mysql數據庫

# 讀取excel表的內容然後寫入數據庫
import xlrd,pymysql

# 數據庫配置
host = 'localhost' # localhost:本地數據庫
user = 'root' # 用戶名
password = '123456' # 密碼
database = 'test_database' # 數據庫名稱
charset = 'utf8' # 編碼方式

# 創建數據庫連接
conn = pymysql.connect(host=host, user=user, password=password
                           , database=database, charset=charset)
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)

excel_file = "#I1FGQ0數據庫.xlsx" # 設置excel文件名
file = xlrd.open_workbook(excel_file) # 讀取excel文件

sheets = file.sheet_names() #獲取所有的sheet頁
for sheet in sheets:
	sheet_values = file.sheet_by_name(sheet) # 獲取當前sheet頁內地址空間
	sheet_rows = sheet_values.nrows # 獲取當前sheet行數
	sheet_cols = sheet_values.ncols # 獲取當前sheet列數

	# 因爲sheet長度限制在31個字符,所以當sheet過長時,需要手動設置丟失部分

	# sql字符串拼接
	sql = "insert into " + sheet + " ("
	for i in range(0, sheet_cols): # 拼接字段
		field_name = str(sheet_values.cell(0,i).value)
		if(field_name == 'desc'): # 解決自定義字段與sql關鍵字衝突
			field_name = '`desc`'
		if(i == (sheet_cols-1)): # 校驗是否到最後一列
			sql +=  field_name + ") values ("
		else:
			sql +=  field_name + ","
	for j in range(0, sheet_cols): # 拼接佔位符
		if(j == (sheet_cols-1)):
			sql +=  "%s" + ")"
		else:
			sql +=  "%s" + ","

	# 獲取每行value
	for sheet_row in range(1, sheet_rows):
		values = [] # 使用列表存儲
		for sheet_col in range(0, sheet_cols):
			sheet_value = str(sheet_values.cell(sheet_row,sheet_col).value)
            # 當有些日期字段必填時,可以在這裏自定義
			if (str(sheet_values.cell(0,sheet_col).value) == "add_time"):
				sheet_value = '2020-05-06'
			if not sheet_value:
				sheet_value = None
			values.append(sheet_value)
		values = tuple(values) # 轉換成元組
		
		cursor.execute(sql,values) # 執行sql語句插入數據
		conn.commit()
cursor.close()
conn.close()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章