2017-12-23 21 views
0

database_insert関数がトリガされるたびに、変数test_textの値をPostgres 9.6データベースに挿入しようとしています。Psycopg2 - 文字列フォーマット中にすべての引数が変換されない

私はプレースホルダなしで以下のコードを使用している場合、私は2.7

vのPythonの3.6とpsycopg2を使用しています:例えば、「試験」と%sのを交換したり削除、(test_text) - 私が期待するとして、それは動作します。 ..

def database_insert(update): 

    test_text = 'This is some test text' 

    with psycopg2.connect("DB CONNECTION DETAILS ARE HERE'") as conn: 

     cur = conn.cursor() 

     cur.execute("INSERT INTO test VALUES(%s);", (test_text)) 

     conn.commit() 

     cur.close() 

    conn.close() 

関数は%sのプレースホルダを使用してtest_text変数の値を挿入するためにtrysしかし、私は以下のエラーを取得...

cur.execute("INSERT INTO test VALUES(%s);", (test_text)) 
TypeError: not all arguments converted during string formatting 

私はつもりどこに任意のヘルプwこれと一緒にロングは非常に感謝されます!

答えて

1

ここには微妙な問題があります。

括弧だけでなくタプルを作成するには、コンマが必要です。

だから、単純に変更します。

cur.execute("INSERT INTO test VALUES(%s);", (test_text,)) 

そして、あなたは良いはずです!

+0

私はそれがこのような単純な修正だとは信じられません - 私は文字通りこれを修正する方法について何時間も探してきました。ありがとうBernie!私はこのことができるようになるとすぐに正解とマークします - メリークリスマス! –

+0

あなたもメリークリスマス!ハッピーコーディング – bernie

関連する問題