我正在尝试做一个简单的
没什么特别的,但这正是我得到的结果 - 没什么。
我在一个单独的测试脚本中逐位测试了这个令人讨厌的东西,没有引发错误但是没有数据插入到表中。问题发生在第一个SQL变量(可能),并且最后一个try / catch中有一个错误。
我想我没有正确执行数据类型转换?
以下是代码:
#!/usr/bin/python
import MySQLdb
import pandas as pd
import numpy as np
import xlwings as xw
# ---------- Connect to Excel sheet, get data (list of lists)
wb = xw.Workbook('/users/edchigliak/sites/xlwings/baza.xlsx')
data = xw.Range('dimensions', 'A2:F71').value
# ---------- Open database connection, insert data into table
db = MySQLdb.connect("localhost","root","/pass/","budgeteer")
cursor = db.cursor()
sql 和 可能写得不好:
sql = """INSERT INTO dimensions(dimension, dimType, abbreviation, translationHr, code) VALUES (%s, %d, %s, %s, %d)"""
for row in data:
try:
cursor.execute(sql, row)
db.commit()
except:
db.rollback()
# ---------- Check if INSERT successful
sql = """SELECT * FROM dimensions"""
try:
cursor.execute(sql)
# ---------- Fetch all the rows in a list of lists
results = cursor.fetchall()
for row in cursor:
id = row[0]
dimension = row[1]
dimType = row[2]
abbreviation = row[3]
translationHr = row[4]
code = row[5]
这是错误,转到"除了":
错误:无法获取数据。
# Now print fetched result
print "Dim. ID: %d, Dim.: %s, Dim. type: %d, Abbrev.: %d, Translat.: %s, Code: %d" % (id, dimension, dimType, abbreviation, translationHr, code)
except:
print "Error: unable to fetch data"
db.close()
如果我删除try block:
python git:master❯python proba.py
追溯(最近的呼叫最后):
文件" proba.py",第47行,在 打印"昏暗。 ID:%d,Dim。:%s,昏暗。类型:%d,缩写:%d,Translat。:%s, 代码:%d" %(id,dimension,dimType,abbreviation,translationHr,code) TypeError:%d format:需要一个数字,而不是str
python git:master❯
对于它的价值,这是在脚本开头从Excel中读取的列表示例(可能'没有'正在出现问题?):
[1.0,你' austria',1.0,你' at',None,4.0]
[2.0,你'比利时',1.0,你',',无,7.0]
[3.0,你'捷克',1.0,你' cz',无,9.0]
答案 0 :(得分:1)
无论值的类型如何,您都应始终使用%s
作为参数标记(而不是%d
等):
sql = ("INSERT INTO dimensions(dimension, dimType, abbreviation, "
"translationHr, code) VALUES (%s, %s, %s, %s, %s)")
cursor.execute(sql, row)
数据库驱动程序将为您处理任何引用。