2017-07-15 8 views
1

pythonプロジェクトdedupeの例を使ってデータを保存しようとしています。私が得ているエラーは、データベースにデータを挿入しようとすると、最後に向かっています。PostgresがSQL文字列にバイナリを追加するのを嫌う

Traceback (most recent call last): 
    File "dedupe_orgs.py", line 11, in <module> 
    main() 
    File "dedupe_orgs.py", line 7, in main 
    entity.dedupe_orgs() 
    File "/orgs.py", line 183, in dedupe_orgs 
    c2.execute("INSERT INTO entity_organization %s VALUES %s" % (values, args_str)) 
psycopg2.ProgrammingError: syntax error at or near "b" 
LINE 1: ...d,id,name,created_on,updated_on,entity_id) VALUES b"(0,65,'S... 

これは、関連するコードです:

私が手にエラーがある私は、問題は、Python 2に書かれた例であると考えてい

num_cols = len(column_names) 
    mog = "(" + ("%s," * (num_cols - 1)) + "%s)" 
    args_str = ','.join(c2.mogrify(mog, x) for x in full_data) 
    values = "(" + ','.join(x for x in column_names) + ")" 
    c2.execute("INSERT INTO entity_organization %s VALUES %s" % (values, args_str)) 
    con2.commit() 
    con2.close() 
    con.close() 

が、私は、Python 3どのように使用していますエラーを解決して、 'b'がすべてのクエリに追加されず、データが保存されないようにすることはできますか?

+0

これはあなたの質問に答えませんが、私はあなたのpythonコードでpostgresデータベースとやりとりする場合は、sqlalchemyを強くお勧めします。ほとんどの場合、生のSQLコードを書く必要がないため、このようなエラーは発生しません。 – melchoir55

+0

@ melchoir55私は実際には他の領域でsqlalchemyを使用していますが、この例を変換する前にこの例を使用しようとしていました。たぶん私は今試してみるべきでしょう。 – Casey

+0

私はsqlalchemyに切り替えました。 – Casey

答えて

0

args_strは実際には文字列ではないと思います。 pycharmのような適切なデバッガを使用していますか?もしそうなら、それを補間しようとする前に変数を検査して文字列であることを確認できますか?

関連する問題