【问题标题】:Importing from Excel to MySQL Table Using Python 2.7使用 Python 2.7 从 Excel 导入 MySQL 表
【发布时间】:2017-04-06 21:33:23
【问题描述】:

我正在尝试将此 Excel 工作表中的数据插入 MySQL 表:https://www.dropbox.com/s/w7m282386t08xk3/GA.xlsx?dl=0

脚本应从第 16 行的第二张“每日指标”表开始。MySQL 表已经包含名为日期、活动、用户和会话的字段。

使用 Python 2.7,我已经创建了 MySQL 连接并打开了工作表,但我不确定如何遍历这些行并插入到数据库中。

import MySQLdb as db
from openpyxl import load_workbook

wb = load_workbook('GA.xlsx')
sheetranges = wb['Daily Metrics']
print(sheetranges['A16'].value)

conn = db.connect('serverhost','username','password','database')

cursor = conn.cursor()

cursor.execute('insert into test_table ...')

conn.close()

感谢您的帮助!

【问题讨论】:

    标签: python mysql python-2.7 openpyxl


    【解决方案1】:

    试试这个,看看它是否符合您的要求。您将需要更新为正确的工作簿名称和位置。另外,请在 for rw in wb["Daily Metrics"].iter_rows("A16:B20"): 中更新您要迭代的范围

    from openpyxl import  load_workbook
    
    wb = load_workbook("c:/testing.xlsx")
    
    for rw in wb["Daily Metrics"].iter_rows("A16:B20"):
        for cl in rw:
            print cl.value
    

    【讨论】:

      【解决方案2】:

      只需要MySQLOpenpyxl的基础知识,你可以自己看教程解决。

      在执行脚本之前,您需要创建数据库和表。假设你已经做到了。

      import openpyxl
      import MySQLdb
      
      wb = openpyxl.load_workbook('/path/to/GA.xlsx')
      ws = wb['Daily Metrics']
      
      # map is a convenient way to construct a list. you can get a 2x2 tuple by slicing 
      # openpyxl.worksheet.worksheet.Worksheet instance and last row of worksheet 
      # from openpyxl.worksheet.worksheet.Worksheet.max_row
      data = map(lambda x: {'date': x[0].value, 
                            'campaign': x[1].value, 
                            'users': x[2].value, 
                            'sessions': x[3].value}, 
                 ws[16: ws.max_row])
      
      # filter is another builtin function. Filter blank cells out if needed
      data = filter(lambda x: None not in x.values(), data)
      
      db = MySQLdb.connect('host', 'user', 'password', 'database')
      cursor = db.cursor()
      for row in data:
          # execute raw MySQL syntax by using execute function
          cursor.execute('insert into table (date, campaign, users, sessions)'
                         'values ("{date}", "{campaign}", {users}, {sessions});'
                         .format(**row))  # construct MySQL syntax through format function
      db.commit()
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-09-23
        • 1970-01-01
        • 2018-04-01
        • 1970-01-01
        • 2023-03-10
        • 1970-01-01
        • 2016-03-17
        相关资源
        最近更新 更多