python列表赋值给变量_在Python2.7中为列表中的变量赋值

本文介绍了一种尝试从Excel文件动态提取列名并使用pyodbc将数据批量插入到数据库的方法。作者通过xlrd库读取Excel,然后利用numpy创建数据结构,并尝试用动态方式构建SQL插入语句,但在执行时遇到错误。问题在于如何将数据列表与列名对应起来以正确执行SQL操作。
摘要由CSDN通过智能技术生成

我尝试使用pyodbc将相当数量(约30万行)的数据上传到数据库中。由于数据将需要每季度更新一次(从电子表格中),所以我尝试创建一种动态插入语句,以使事情更加简化。我的想法是,我可以将电子表格中每个列的标题命名为表中我希望上载相应数据的列。在

我试图做的是编写一个脚本,将工作表标题行中的列名提取出来,并将这些列名称用作变量,这样,如果我要连续从不同的excel表上载不同的数据,则无需更改任何代码:import xlrd

import numpy as np

import pyodbc

wb=xlrd.open_workbook(r"FILE")

worksheet = wb.sheet_by_name('SHEET_NAME')

num_rows = worksheet.nrows

num_cols = worksheet.ncols

header_row = 0

header_list = [worksheet.row_values(header_row)]

header_values = ", ".join([str(i) for i in [cell.value for cell in worksheet.row(header_row)]])

question_marks = ",?" * (num_cols - 1)

cell=worksheet.cell(1,1)

arr = []

for rowind in range(num_rows)[(header_row + 1):]:

arr.append([cell.value for cell in worksheet.row(rowind)])

data = np.rec.fromrecords(arr, names=header_values)

cnxn = pyodbc.connect(r"DRIVER={SQL Server};SERVER=XXXXXXXXXX

\DEV_CON1;DATABASE=GGG;UID=AAA_dbo;PWD=XXXXXXXXX;")

cursor = cnxn.cursor()

populate_db = "insert into tblSnap_TEST(" + header_values + ") values (?" + question_marks + ")"

for i in header_list:

i = data[i]

values = header_list

cursor.execute(populate_db,values)

cursor.close

cnxn.commit

cnxn.close`

当我尝试运行脚本时,收到以下错误消息:

^{pr2}$

我以前的方法是显式定义要传递的值,例如:

account_numbers = (sheet.cell(row_index, 1).value)

但就像我说的,我在这里要做的是让它不必打印出来。这就是我试图用I=data[I]来做的。我希望Python有一种方法可以识别出“account_numbers”在一个列表中(从工作表的标题创建),然后根据我上面尝试过的i = data[i]获取相应的数据。这样的解决方案有可能吗?data[i]确实为每个列返回要插入到表中的正确数据,但execute语句无法识别它。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值