SELECT INSERT 值错误
SELECT within INSERT Values Error
我正在尝试将数据插入 table。数据可以来自 CSV,也可以来自另一个 table,基于 CSV 的值。
我得到的错误:
unsupported format character 'R' (0x52) at index 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()
如有任何帮助,我们将不胜感激。
这是您的查询中字母 R(0x52)
的第一个匹配项。
SELECT reseller_type FROM resellers WHERE reseller='%s' % Reseller
看着它你需要转义 %
加上另一个前缀 %
因为它没有用引号引起来即
SELECT reseller_type FROM resellers WHERE reseller='%s' %% Reseller
也适用于其他内部选择
我正在尝试将数据插入 table。数据可以来自 CSV,也可以来自另一个 table,基于 CSV 的值。
我得到的错误:
unsupported format character 'R' (0x52) at index 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()
如有任何帮助,我们将不胜感激。
这是您的查询中字母 R(0x52)
的第一个匹配项。
SELECT reseller_type FROM resellers WHERE reseller='%s' % Reseller
看着它你需要转义 %
加上另一个前缀 %
因为它没有用引号引起来即
SELECT reseller_type FROM resellers WHERE reseller='%s' %% Reseller
也适用于其他内部选择