最新消息: 新版网站上线了!!!

使用python将excel数据导入数据库过程详解

ÒòΪÐèÒª¶ÔÊý¾Ý´¦Àí£¬½«excelÊý¾Ýµ¼Èëµ½Êý¾Ý¿â£¬¼Ç¼һϹý³Ì¡£

ʹÓõ½µÄ¿â£ºxlrd ºÍ pymysql £¨Èç¹ûÐèҪдµ½excel¿ÉÒÔʹÓÃxlwt£©

Ö±½Ó¶ª´úÂ룬ʹÓÃpython3£¬×¢ÊͱȽÏÇå³þ¡£

import xlrd
import pymysql
# import importlib
# importlib.reload(sys) #³öÏÖÄØreload´íÎóʹÓÃ
def open_excel():
  try:
    book = xlrd.open_workbook("XX.xlsx") #ÎļþÃû£¬°ÑÎļþÓëpyÎļþ·ÅÔÚͬһĿ¼ÏÂ
  except:
    print("open excel file failed!")
  try:
    sheet = book.sheet_by_name("sheetÃû³Æ")  #execlÀïÃæµÄworksheet1
    return sheet
  except:
    print("locate worksheet in excel failed!") 
 #Á¬½ÓÊý¾Ý¿â
try:
  db = pymysql.connect(host="127.0.0.1",user="root",
    passwd="XXX",
    db="XXX",
    charset='utf8')
except:
  print("could not connect to mysql server")
 
def search_count():
  cursor = db.cursor()
  select = "select count(id) from XXXX" #»ñÈ¡±íÖÐxxxxx¼Ç¼Êý
  cursor.execute(select) #Ö´ÐÐsqlÓï¾ä
  line_count = cursor.fetchone()
  print(line_count[0])
 
 
def insert_deta():
  sheet = open_excel()
  cursor = db.cursor()
  for i in range(1, sheet.nrows): #µÚÒ»ÐÐÊDZêÌâÃû£¬¶ÔÓ¦±íÖеÄ×Ö¶ÎÃûËùÒÔÓ¦¸Ã´ÓµÚ¶þÐпªÊ¼£¬¼ÆËã»úÒÔ0¿ªÊ¼¼ÆÊý£¬ËùÒÔÖµÊÇ1
 
    name = sheet.cell(i,0).value #È¡µÚiÐеÚ0ÁÐ
    data = sheet.cell(i,1).value#È¡µÚiÐеÚ1ÁУ¬ÏÂÃæÒÀ´ÎÀàÍÆ
    print(name)
    print(data)
    value = (name,data)
    print(value)
    sql = "INSERT INTO XXX(name,data)VALUES(%s,%s)"
    cursor.execute(sql,value) #Ö´ÐÐsqlÓï¾ä
    db.commit()
  cursor.close() #¹Ø±ÕÁ¬½Ó
insert_deta()
db.close()#¹Ø±ÕÊý¾Ý
print ("ok ")

XXXÀï×ÔÐÐÐÞ¸Ä×Ô¼ºµÄÃû³Æ¡£

˵Ã÷£º¶ÔÓÚ²»¹æÔòµÄµ¥Ôª¸ñ£¬ÀýÈçºÏ²¢¹ýµÄµ¥Ôª¸ñ»áÈ¡µ½¿ÕÖµ¡£

ÓÅ»¯ÁËÒ»ÏÂÕâ¸ö³ÌÐò

import pymysql
import xlrd 
# Á¬½ÓÊý¾Ý¿â
try:
  db = pymysql.connect(host="127.0.0.1", user="root",
             passwd="XXX",
             db="XXX",
             charset='utf8')
except:
  print("could not connect to mysql server") 
def open_excel():
  try:
    book = xlrd.open_workbook("XXX.xlsx") #ÎļþÃû£¬°ÑÎļþÓëpyÎļþ·ÅÔÚͬһĿ¼ÏÂ
  except:
    print("open excel file failed!")
  try:
    sheet = book.sheet_by_name("XXX")  #execlÀïÃæµÄworksheet1
    return sheet
  except:
    print("locate worksheet in excel failed!") 
def insert_deta():
  sheet = open_excel()
  cursor = db.cursor()
  row_num = sheet.nrows
  for i in range(1, row_num): # µÚÒ»ÐÐÊDZêÌâÃû£¬¶ÔÓ¦±íÖеÄ×Ö¶ÎÃûËùÒÔÓ¦¸Ã´ÓµÚ¶þÐпªÊ¼£¬¼ÆËã»úÒÔ0¿ªÊ¼¼ÆÊý£¬ËùÒÔÖµÊÇ1
    row_data = sheet.row_values(i)
    value = (row_data[0],row_data[1],row_data[2],row_data[3])
    print(i)
    sql = "INSERT INTO demo_yangben(xxx,xxxx,xxxx,xxxx)VALUES(%s,%s,%s,%s)"
    cursor.execute(sql, value) # Ö´ÐÐsqlÓï¾ä
    db.commit()
  cursor.close() # ¹Ø±ÕÁ¬½Ó
open_excel()
insert_deta()

ÔÙ¸Äһϣ¬Ã¿Ò»ÍòÌõÊý¾ÝдÈëµ½Êý¾Ý¿âÒ»´Î

import pymysql
import xlrd
import sys 
'''
  Á¬½ÓÊý¾Ý¿â
  args£ºdb_name£¨Êý¾Ý¿âÃû³Æ£©
  returns:db
 
''' 
def mysql_link(de_name):
  try:
    db = pymysql.connect(host="127.0.0.1", user="xxx",
               passwd="xxx",
               db=xxx,
               charset='utf8')
    return db
  except:
    print("could not connect to mysql server")
 
'''
  ¶ÁÈ¡excelº¯Êý
  args£ºexcel_file£¨excelÎļþ£¬Ä¿Â¼ÔÚpyÎļþͬĿ¼£©
  returns£ºbook
'''
 
 
def open_excel(excel_file):
  try:
    book = xlrd.open_workbook(excel_file) # ÎļþÃû£¬°ÑÎļþÓëpyÎļþ·ÅÔÚͬһĿ¼ÏÂ
    print(sys.getsizeof(book))
    return book
  except:
    print("open excel file failed!")
 
 
'''
  Ö´ÐвåÈë²Ù×÷
  args:db_name£¨Êý¾Ý¿âÃû³Æ£©
     table_name(±íÃû³Æ£©
     excel_file£¨excelÎļþÃû£¬°ÑÎļþÓëpyÎļþ·ÅÔÚͬһĿ¼Ï£©
 
'''
 
 
def store_to(db_name, table_name, excel_file):
  db = mysql_link(db_name) # ´ò¿ªÊý¾Ý¿âÁ¬½Ó
  cursor = db.cursor() # ʹÓà cursor() ·½·¨´´½¨Ò»¸öÓαê¶ÔÏó cursor
 
  book = open_excel(excel_file) # ´ò¿ªexcelÎļþ
  sheets = book.sheet_names() # »ñÈ¡ËùÓÐsheet±íÃû
  for sheet in sheets:
    sh = book.sheet_by_name(sheet) # ´ò¿ªÃ¿Ò»Õűí
    row_num = sh.nrows
    print(row_num)
    list = [] # ¶¨ÒåÁбíÓÃÀ´´æ·ÅÊý¾Ý
    num = 0 # ÓÃÀ´¿ØÖÆÿ´Î²åÈëµÄÊýÁ¿
    for i in range(1, row_num): # µÚÒ»ÐÐÊDZêÌâÃû£¬¶ÔÓ¦±íÖеÄ×Ö¶ÎÃûËùÒÔÓ¦¸Ã´ÓµÚ¶þÐпªÊ¼£¬¼ÆËã»úÒÔ0¿ªÊ¼¼ÆÊý£¬ËùÒÔÖµÊÇ1
      row_data = sh.row_values(i) # °´ÐлñÈ¡excelµÄÖµ
      value = (row_data[0], row_data[1], row_data[2], row_data[3], row_data[4], row_data[5], \
           row_data[6], row_data[7], row_data[8], row_data[9], row_data[10], row_data[11], row_data[12],
           row_data[13], row_data[14])
      list.append(value) # ½«Êý¾ÝÔÝ´æÔÚÁбí
      num += 1
      if( num>= 10000 ): # ÿһÍòÌõÊý¾ÝÖ´ÐÐÒ»´Î²åÈë
        print(sys.getsizeof(list))
        sql = "INSERT INTO " + table_name + " (time, xingbie, afdd, xzb, yzb, cfbj, jjlbmc, \
        bjlbmc, bjlxmc, bjlxxlmc, gxqymc,gxdwmc, afql, afxqxx, cjdwmc)\
        VALUES(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)"
        cursor.executemany(sql, list) # Ö´ÐÐsqlÓï¾ä
 
        num = 0 # ¼ÆÊý¹éÁã
        list.clear() # Çå¿Õlist
        print("worksheets: " + sheet + " has been inserted 10000 datas!")
 
  print("worksheets: " + sheet + " has been inserted " + str(row_num) + " datas!")
  db.commit() # Ìá½»
  cursor.close() # ¹Ø±ÕÁ¬½Ó
  db.close() 
 if __name__ == '__main__':
  store_to('demo', 'demo_yangben', 'xxx.xlsx')

˼¿¼£¬Èç¹ûÊý¾Ý²åÈëÓдíÎó£¬Ôõô½â¾ö£¬

ÆäʵÓкܶàÊý¾Ý¿â¹¤¾ß¿ÉÒÔÖ±½ÓÀ´½â¾öÕâ¸öÎÊÌ⣬עÒâ×Ö·ûת»»µÄ¸ñʽ¾ÍºÃ¡£

ÒÔÉϾÍÊDZ¾ÎĵÄÈ«²¿ÄÚÈÝ£¬Ï£Íû¶Ô´ó¼ÒµÄѧϰÓÐËù°ïÖú£¬Ò²Ï£Íû´ó¼Ò¶à¶àÖ§³Ö½Å±¾Ö®¼Ò¡£

转载请注明:谷谷点程序 » 使用python将excel数据导入数据库过程详解