2017-12-20 12 views
0

テーブルにデータを挿入しようとしています。データは、CSVまたはCSVの値に基づく別のテーブルのいずれかになります。INSERT内のSELECT値エラー

エラー私は取得しています:インデックスで

サポートされていない形式の文字 'R'(0x52)64

コード:任意の助けをいただければ幸いです

def Test(): 
path = 'USA DIRECT.xls' 
workbook = xlrd.open_workbook(path, on_demand = True) 
sheet = workbook.sheet_by_index(0) 
for rowx in xrange(1, sheet.nrows): 
    try: 
     Id = '' 
     Year = datetime.now().strftime('%Y') 
     Month = datetime.now().strftime('%m') 
     Partner = 'USA Direct' 
     PartnerType = 'Direct' 
     Reseller = sheet.row_values(rowx, start_colx=12, end_colx=None)[0] 
     Model = sheet.row_values(rowx, start_colx=2, end_colx=None)[0] 
     InvDate = sheet.row_values(rowx, start_colx=11, end_colx=None)[0] 
     CustomerNumber = '' 
     Zip = sheet.row_values(rowx, start_colx=22, end_colx=None)[0] 
     Quantity = sheet.row_values(rowx, start_colx=7, end_colx=None)[0] 
     Total = sheet.row_values(rowx, start_colx=25, end_colx=None)[0] 
     UnitPrice = sheet.row_values(rowx, start_colx=24, end_colx=None)[0] 

     cursor.execute("INSERT INTO sales_olap (id, year, month, reporting_partner, reporting_partner_type, reseller_name, reseller_type, reseller_state, part_number, part_category, product_family, invoice_date, reseller_customer_number, reseller_zip_code, units, extended_cost, unit_cost) VALUES('%s', '%s', '%s','%s', '%s', '%s', (SELECT reseller_type FROM resellers WHERE reseller='%s' % Reseller), (SELECT reseller_state FROM resellers WHERE reseller='%s' % Reseller),'%s', (SELECT category FROM models WHERE model='%s' % Model), (SELECT family FROM models WHERE model='%s' % Model), '%s', '%s', '%s', '%s', '%s', '%s')" %(Id, Year, Month, Partner, PartnerType, Reseller, Model, InvDate, CustomerNumber, Zip, Quantity, Total, UnitPrice)) 
    except Exception, e: 
     print (e) 
workbook.release_resources() 

+0

場合は、他の内側の選択に適用され、すなわち、それは私だった、私はやり直して、より簡単なもので。 – Strawberry

+0

それが私だったら、実際に読みやすくするために、いくつかの行でそのクエリを分割しています。 – Uueerdo

答えて

0

これは、クエリ内の文字ののfustオカレンスです。

SELECT reseller_type FROM resellers WHERE reseller='%s' % Resellerあなたはそれが引用符で包まれていないので、別の%を接頭辞と%をエスケープする必要があり、それを見てみると

SELECT reseller_type FROM resellers WHERE reseller='%s' %% Reseller

が同様

関連する問題