2017-03-02 4 views
1

ローカルのホストpostgresqlデータベース9.6を使用しています。これはその後、私は次のコードを実行私は、データベースに渡したいアポストロフィ が含まれている名前=「マルコデーン」を、持っているので、私は、クエリにPythonからpsqlにアポストロフィを渡すには? 'DatabaseError'オブジェクトに 'エンコード'属性がありません

query = """SELECT pet_name 
        FROM pet 
        WHERE name = '{0}'""".format(name) 

を以下している。この

conn_string = """host='localhost' 
        dbname='contact_form' 
        user='{0}' 
        password='{1}'""".format(db_username, 
               db_password) 

conLocal = psycopg2.connect(conn_string) 

のように接続します。

pet_name = read_sql(query, conLocal) 

しかし、私は次のエラーを取得しています:

'DatabaseError'オブジェクトに 'エンコード'属性がありません

+0

[tag:psql]はコマンドラインクライアントです。あなたは意味する[タグ:postgresql] –

答えて

2

SQL文字列に値を補間するのにformatを使用しないでください。代わり

、例えば、パラメータの組を渡し、execute方法を使用

conn.execute("""SELECT pet_name 
       FROM pet 
       WHERE name = %s""", (name,)) 

1タプル(name,)の使用に注意してください。

詳細については、Python DBI-APIのマニュアルとpsycopg2のマニュアルを参照してください。

+0

私は上記のコードを使用して私はエラーが発生します: 'ProgrammingError'オブジェクトのエンコード –

+1

@ KppatelPatel ...と完全なスタックトレース?私はそのエラーがここからどのように来るか見ることができません。 –

+0

ProgrammingError: "s"またはそれに近い引用符付きの文字列 –