2015-04-03 91 views
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 - 可能不支持的类型。

回答

1

我真的认为你需要对Python做一些介绍。

你正在两个基本的错误:在循环连续细胞,但经过到查询;传递一个复杂的对象,而不是一个本地Python类型,比如一个整数或字符串。

像下面是你想要什么:

player = [cell.value for cell in row] 
cursor.execute(query, player) 

。注意,执行需要一个序列(数组或列表)作为第二个参数。

+0

是的,我是一个新手。但我很努力地赶上使用sqlite,以及如何从excel中获取数据到表中。我花了几天的时间搞清sqlite和openpyxl,所以我不是任何想象力的专家。感谢您的回复,但我无法理解什么是“查询”,当我在程序引用中没有任何内容时;“查询”。如果我冒犯了我的noob错误,我很抱歉。 – Moridiin 2015-04-03 15:09:02

+0

对不起,我的错误你的意思是通过查询我的插入查询。 – Moridiin 2015-04-03 15:14:24

+0

'query'是你想运行的SQL语句。我只写了伪代码供你作为指导。在执行它之前定义查询是相当普遍的做法。 有很多很好的Python教程。你应该投入一些时间或拿起一份Python Cookbook的副本。它会为你节省很多时间和挫折。 – 2015-04-03 15:21:50

相关问题