错误绑定参数0 - 可能不受支持的类型
问题描述:
我正在创建一个SQL数据库,并试图遍历一个excel文件,并将所有数据放入SQL表中,如下所示,但我不断收到一个恼人的错误。我已经看过了数据类型,仍然围绕它,请让我知道如果任何人察觉的问题是什么我的代码不能让我的头是:错误绑定参数0 - 可能不受支持的类型
import sqlite3
from openpyxl import load_workbook
#wb = load_workbook(r"LeaguePlayers.xlsx")
#read workbook to get data
wb = load_workbook(filename = r"LeaguePlayers.xlsx", use_iterators = True)
ws = wb.get_sheet_by_name(name = 'Sheet1')
#ws = wb.worksheets
conn = sqlite3.connect("players.db") # or use :memory: to put it in RAM
cursor = conn.cursor()
# create a table
cursor.execute("""CREATE TABLE players
(player TEXT,
team TEXT,
points INTEGER,
cost REAL,
position TEXT)
""")
#Iterate through worksheet and print cell contents
for row in ws.iter_rows():
for cell in row:
cursor.execute("INSERT INTO players VALUES (?,?,?,?,?)", row)
conn.commit()
#----------------------------------------
# display SQL data
#----------------------------------------
c.execute('SELECT * FROM players')
for row in c:
print (row)
我得到的错误说:
光标.execute(“INSERT INTO players VALUES(?,?,?,?,?)”row) sqlite3.InterfaceError:错误绑定参数0 - 可能不支持的类型。
答
我真的认为你需要对Python做一些介绍。
你正在两个基本的错误:在循环连续细胞,但经过行到查询;传递一个复杂的对象,而不是一个本地Python类型,比如一个整数或字符串。
像下面是你想要什么:
player = [cell.value for cell in row]
cursor.execute(query, player)
。注意,执行需要一个序列(数组或列表)作为第二个参数。
是的,我是一个新手。但我很努力地赶上使用sqlite,以及如何从excel中获取数据到表中。我花了几天的时间搞清sqlite和openpyxl,所以我不是任何想象力的专家。感谢您的回复,但我无法理解什么是“查询”,当我在程序引用中没有任何内容时;“查询”。如果我冒犯了我的noob错误,我很抱歉。 – Moridiin 2015-04-03 15:09:02
对不起,我的错误你的意思是通过查询我的插入查询。 – Moridiin 2015-04-03 15:14:24
'query'是你想运行的SQL语句。我只写了伪代码供你作为指导。在执行它之前定义查询是相当普遍的做法。 有很多很好的Python教程。你应该投入一些时间或拿起一份Python Cookbook的副本。它会为你节省很多时间和挫折。 – 2015-04-03 15:21:50