2017-01-11 2 views
0

のフォーマット:例としてWin32Clipboard.GetClipboardData - 私は、クリップボードからデータを読み取り、それをデータベースに追加するには、次のコードを持っている

import win32clipboard, sqlite3 
try: 
    win32clipboard.OpenClipboard() 
    data = win32clipboard.GetClipboardData() 
    win32clipboard.CloseClipboard() 
    print data[0] # testing 
    print data[1] # testing 
    test = ''.join(data) 
    print test 

    conn = sqlite3.connect('DB') 
    cur = conn.cursor() 
    cur.execute('INSERT INTO Clipboard (Data) VALUES (?)', (test)) 
    conn.commit() 
    conn.close() 


except TypeError as e: 
    pass 
    print e 

、クリップボードのデータが「StackOverflowの」です。
次のエラーが受信される:私は「データ」の出力は、タプルまたはリストにあったと仮定

s 
Traceback (most recent call last): 
t 
stackoverflow 
    File "clipboard.py", line 13, in <module> 
    cur.execute('INSERT INTO Clipboard (Data) VALUES (?)', (test)) 
sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 1, and there are 13 supplied. 

。だから、私は複数の方法で値を結合しようとしましたが、上記の結合はテストされた方法の1つを表しています。
ご協力いただければ幸いです。

答えて

1

パラメータリストはシーケンスでなければなりません。
あなたは文字列のシーケンスとしてそれを読む文字列 - sqliteを送信します。
タムルを1つの要素で送信する場合はカンマ(test,)を追加するか、リスト[test]を使用してください。

+0

完璧です。ありがとう。なぜこれが起こる必要があるのか​​、または自分自身を研究するために検索用語が最高になるのかを簡単に概観できますか?ちょうどタプルズを見て、たくさんの地獄をもたらす! –

+0

タプルはリストのようなものです。 タプルは不変であり、リストより少ないメモリしか必要としません。 角括弧で囲まれたリスト、丸括弧で囲まれたタプル。 タプルの最後の1つの要素を持つコンマは、タプルがどこにあるのかを理解するために役立ちます。 – GoodWasHere

関連する問題