2017-05-04 14 views
1

私はこれをすべてテストとしてやっています。私はヘッダーを持っているcsvファイルを取って、その値をpostgresqlデータベーステーブルにコピーしたいと思います。テーブルの列の名前は、大文字と小文字が区別されるcsvファイルのヘッダーと同じです。テーブルには2つのカラム "pkey"、 "m"があります。 csvにはヘッダのための "m"があります。 pkeyは、自動インクリメントの主キー設定です。テストとして、私はちょうどcsvの "m"列をテーブルにコピーしたいと思います。Python、Postgresqlのcsvからのコピーの問題

import csv 
import psycopg2 


database = psycopg2.connect (database = "testing", user="**", 
password="**", host="**", port="**") 

ocsvf = open("sample.csv") 

def merger(conn, table_name, file_object): 
    cursor = conn.cursor() 
    cursor.copy_from(file_object, table_name, sep=',', columns=('mls')) 
    conn.commit() 
    cursor.close() 

try: 
    merger(database, 'tests', ocsvf) 
finally: 
    database.close() 

私はエラー

Traceback (most recent call last): 
    File "csvtest.py", line 26, in <module> 
merger(database, 'tests', ocsvf) 
    File "csvtest.py", line 21, in merger 
cursor.copy_from(file_object, table_name, sep=',', columns=('m')) 
    psycopg2.ProgrammingError: column "m" of relation "tests" does not exist 

としてこれを取得するコードを実行しようとすると私は見ているだけの上に保つことをその何かがシンプル確信しているが、私はまた、私はこれと一つのことをGoogleで検索しています誰かがプライマリキーが設定されているかもしれないと言ったが、私はそれをテストし、プライマリキーはpgadminから手動入力を行うとうまく動作する。最終的にそれを反復する3つの項目['m','l','s']につながることを意味"mls"に評価さ

cursor.copy_from(file_object, table_name, sep=',', columns=('mls')) 

('mls'):任意のヘルプはこのラインで

答えて

0

素晴らしいおかげだろう。 次のように、この行を記述する必要があります。

cursor.copy_from(file_object, table_name, sep=',', columns=('mls',)) 

表現一つの項目とのタプルに評価さ('mls',)"mls"、私はあなたがする意図を推測するものです。

+0

ありがとうございました。私はそれが繰り返すことを知りませんでした。どうもありがとうございます – ChevyCowboy15

+0

大歓迎です。 –

関連する問題