我一直在學習使用python的sqlite3。現在,我有一個功能只需要一個詞,並在互聯網上查找該詞的定義。然後我嘗試將該單詞存儲在一個表中,並將定義存儲到通過外鍵鏈接在一起的另一個表中。插入sqlite3值時Python TypeError?
像這樣:
#! /usr/bin/env python
import mechanize
from BeautifulSoup import BeautifulSoup
import sys
import sqlite3
def dictionary(word):
br = mechanize.Browser()
response = br.open('http://www.dictionary.reference.com')
br.select_form(nr=0)
br.form['q'] = word
br.submit()
definition = BeautifulSoup(br.response().read())
trans = definition.findAll('td',{'class':'td3n2'})
fin = [i.text for i in trans]
query = {}
word_count = 1
def_count = 1
for i in fin:
query[fin.index(i)] = i
con = sqlite3.connect('vocab.db')
with con:
spot = con.cursor()
spot.execute("SELECT * FROM Words")
rows = spot.fetchall()
for row in rows:
word_count += 1
spot.execute("INSERT INTO Words VALUES(?,?)", word_count,word)
spot.execute("SELECT * FROM Definitions")
rows = spot.fetchall()
for row in rows:
def_count += 1
for q in query:
spot.execute("INSERT INTO Definitions VALUES(?,?,?)", def_count,q,word_count)
return query
print dictionary(sys.argv[1])
當我運行它:
./database_trial.py 'pass'
這是錯誤消息:
Traceback (most recent call last):
File "./database_trial.py", line 37, in <module>
print dictionary(sys.argv[1])
File "./database_trial.py", line 28, in dictionary
spot.execute("INSERT INTO Words VALUES(?,?)", word_count,word)
TypeError: function takes at most 2 arguments (3 given)
我只有兩個參數傳遞給函數內部'字'表,但是,消息說有三個?
spot.execute("INSERT INTO Words VALUES(?,?)", word_count,word)
我想我可能會搞砸了一些與sys.argv。所以我通過並將該行更改爲:
spot.execute("INSERT INTO Words VALUES(?,?)", word_count, sys.argv[1])
我仍然得到了與錯誤消息相同的結果?
不勝感激,謝謝! – tijko 2012-08-13 21:50:26