2011-01-22 2 views
1

이 질문의 존재 형식 TEXT의 필드로 제작 한 SQLite는 테이블을 감안할 때 파이썬에서 InterfaceError을 던져, 다음은 실패
InterfaceError: Error binding parameter 2 - probably unsupported type.DB-API SQLite는 INSERT 문은 2.7

:
hsh = hashlib.sha1("".join(some_list)).hexdigest()
db_setup(hsh)

나는 오류가 나타납니다 내가 (는 def db_setup에서 to_insert 예 : 57, 또는 "hello"을 수동 INT 또는 문자열을 대체 할 경우
def db_setup(my_hash, oavals) 
    to_insert = (my_hash,) 
    ('INSERT INTO position VALUES \ 
    (null, ?, ?, null, ?, ?, ?, ?, ?)',(0, 0, to_insert, 
    oavals["a"], oavals["b"], 
    oavals["c"], oavals["d"])) 

는, 그것이 t 걸려 넘어 질 것 믿고 날 리드하는, 잘 작동 웬일인지 해쉬. 마치 내가 여기서 명백한 것을 놓치고있는 것처럼 느껴집니다.


테이블 스키마
'CREATE TABLE position \
(id INTEGER PRIMARY KEY, position INTEGER, displayline INTEGER, \
header TEXT, digest TEXT, conkey TEXT, consecret TEXT, \
acckey TEXT, accsecret TEXT)'

+0

테이블에 대한 스키마가 무엇입니까 : 여기

은 예입니다? – Mark

답변

2

to_insert가 튜플이 아닌 삽입하고자하는 값이기 때문에 실패한다.

to_insert = my_hash 

또는 더 나은 아직, 당신의 매개 변수 목록에 my_hash을 넣어 :

은에 첫 선을 변경해보십시오.

>>> hsh = '49cb6536afc7e4a4b3a94eb493aae4d52b8f6a60' 
>>> conn = sqlite3.connect(':memory:') 
>>> c = conn.cursor() 
>>> c.execute("CREATE TABLE t (i TEXT);") 
>>> c.execute("INSERT INTO t VALUES (?)", (hsh,)) # tuple works 
<sqlite3.Cursor object at 0x011A35E0> 
>>> c.execute("INSERT INTO t VALUES (?)", ((123,),)) # tuple within tuple doesn't 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
sqlite3.InterfaceError: Error binding parameter 0 - probably unsupported type. 
+0

그래, 그게 다야. 터플 내의 튜플이 문제였다. 감사! – urschrei