2013-10-14 4 views
6

psycopg2でPostgreSQLデータベースにリンクされたクエリを実行しています。ここでは、コードに問題がある:私はそれをチェックし、PostgreSQL TypeError:文字列フォーマット時にすべての引数が変換されない

with open('dataFile.txt', 'r') as f: 
    lines = f.readlines() 
    newLines = [line[:-1] for line in lines] 
    curr=conn.cursor() 
    lineString = ','.join(newLines) 
    curr.execute("SELECT fields.fieldkey FROM fields LEFT JOIN zone ON zone.fieldkey=fields.fieldkey WHERE zone.zonekey = %s;", (newLines[0])) 
    rows = curr.fetchall() 

DBに接続して何の問題もありませんし、ラインの種類は、[0]、間違いなく文字列です。文字列の書式設定の構文に何か問題はありますか?タプルことを確認するためにlines[0]後にカンマが存在する必要があります

TypeError: not all arguments converted during string formatting 

答えて

12

:明確にする

私が得るエラーは、これです。

execute method is expecting a sequence (or a mapping)以降、括弧で囲んで指定した文字列に対して繰り返し処理が行われます。ですから、それを明示的にタプル化する必要があります。 tuple function

(tuple(lines[0])) 
を使用すると、より明確なコードで同じ結果が得られます。
関連する問題