2015-04-03 94 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

相關問題