最初,我开始将其导入NoSQL数据库,该数据库工作正常,但找不到正确的报表编写工具。因此,我正在切换到SQL Server,以便可以使用SSR。但将数据导入SQL Server数据库中的表时遇到问题
importncdrdata = "INSERT INTO ncdr.dbo.ncdrdatatest (Hospital, YrQTRid, MetricKey, LineText, Year, Quarter, YrQtrRange, qtrnum, qtrden, qtrpercent, subgroup) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"
importvolgroup = "INSERT INTO ncdr.dbo.ncdrvoltest (Hospital, YrQTRid, MetricKey, LineText, Year, Quarter, YrQtrRange, rqtrnum, rqtrden, rqtrpercent, volnum, volpercent, subgroup) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"
def importncdrfile():
# Open the workbook and select the first worksheet
wb = xlrd.open_workbook(self.filename)
sh = wb.sheet_by_index(1)
# Function to import main set of data
if yearqtrid.get() == "2019Q3":
def excelToDict(hospital, metricKey, lineText, year, quarter, yrQtrRange, num, den, percent):
for rownum in range(12, sh.nrows):
ncdr = OrderedDict()
row_values = sh.row_values(rownum)
ncdr['Hospital'] = hospitalchosen.get()
ncdr['YrQTRid'] = yearqtrid.get()
ncdr['MetricKey'] = row_values[metricKey]
ncdr['LineText'] = row_values[lineText]
ncdr['Year'] = year
ncdr['Quarter'] = quarter
ncdr['YrQtrRange'] = yrQtrRange
ncdr['qtrnum'] = row_values[num]
ncdr['qtrden'] = row_values[den]
ncdr['qtrpercent'] = row_values[percent]
ncdr['SubGroup'] = 'holder'
ncdr_list.append(ncdr)
# List to hold dictionaries
ncdr_list = []
# Imports data into MongoDB takes the aboce code and then runs the function against each set of data and then repeats for all 4 Quarters
excelToDict(n,0, 1, 2018, 4, 20184, 2, 4, 6)
excelToDict(n,0, 1, 2019, 1, 20191, 8, 10, 12)
excelToDict(n,0, 1, 2019, 2, 20192, 14, 16, 18)
excelToDict(n,0, 1, 2019, 3, 20193, 20, 22, 24)
cursor.executemany(importncdrdata, ncdr_list)
#x = importncdrdata.insert_many(ncdr_list)
# function to import volume group and rolling quarters
def excelToDictvol(hospital, metricKey, lineText, year, quarter, yrQtrRange, rqtrnum, rqtrden, rqtrpercent, volnum, volpercent):
for rownum in range(12, sh.nrows):
ncdrvol = OrderedDict()
row_values = sh.row_values(rownum)
ncdrvol['Hospital'] = hospitalchosen.get()
ncdrvol['YrQTRid'] = yearqtrid.get()
ncdrvol['MetricKey'] = row_values[metricKey]
ncdrvol['LineText'] = row_values[lineText]
ncdrvol['Year'] = year
ncdrvol['Quarter'] = quarter
ncdrvol['YrQtrRange'] = yrQtrRange
ncdrvol['rqtrnum'] = row_values[rqtrnum]
ncdrvol['rqtrden'] = row_values[rqtrden]
ncdrvol['rqtrpercent'] = row_values[rqtrpercent]
ncdrvol['volnum'] = row_values[volnum]
ncdrvol['volpercent'] = row_values[volpercent]
ncdrvol['SubGroup'] = 'holder'
ncdr_vollist.append(ncdrvol)
ncdr_vollist = []
excelToDictvol(n,0, 1, 2019, 3, 20193, 26, 28, 30, 32, 34)
#v = importvolgroup.insert_many(ncdr_vollist)
cursor.executemany(importvolgroup, ncdr_vollist)
我得到的错误是
TypeError: ('Params must be in a list, tuple, or Row', 'HY000')
但我不知道如何将数据导入到列表、元组或行中,以便导入到SQL Server表中
编辑我只是把它编辑成一个元组
if yearqtrid.get() == "2019Q3":
def excelToTuple(hospital, metricKey, lineText, year, quarter, yrQtrRange, num, den, percent):
for rownum in range(12, sh.nrows):
ncdr = tuple(['Hospital','YrQTRid','Metrickey','LineText','Year','Quarter','YrQtrRange','qtrnum','qtrden','qtrpercent','SubGroup'])
row_values = sh.row_values(rownum)
if isinstance(row_values[metricKey], str) :
subgroup = (row_values[metricKey], str)
ncdr = (hospitalchosen.get(),yearqtrid.get(),row_values[metricKey],row_values[lineText],year,quarter,yrQtrRange,row_values[num],row_values[den],row_values[percent],subgroup)
ncdr_tuple.append(ncdr)
目前没有回答
相关问题 更多 >
编程相关推荐