2017-08-14 13 views
0

私のpostgresqlテーブルに新しいカラムを追加しました。 この新しい追加された列に値を追加します。 見つかった唯一のコマンドでは、値を追加できますが、選択した列の行には追加できません。私が持っているトラインよ何 は次のとおりです。Postgresqlはforループを使ってカラムに値を追加します(Python上)

cursor.execute('SELECT Column_name FROM Table_name') 
rows = cursor.fetchall() 
cursor.execute('ALTER TABLE Table_name ADD NewColumn_name type') 
for row in rows: 
    #Here I want to have a commands that adds a value (result of a function: func(row)) to every row of the new column, one by one something like: 

    NewColumn_name[i] = func(row) 
    i = i+1 
+0

プライマリキーまたはユニークカラムとは何ですか? –

+0

'func'は何をしますか? –

答えて

0

ループ本体にUPDATE文を実行する必要があります。この代わりに:

NewColumn_name[i] = func(row) 

はこのような何か(documentation)を試してみてください。

cursor.execute('UPDATE Table_name SET NewColumn_name = %s WHERE id = %s', (func(row),row[0]); 

はTable_nameのの最初の行は、プライマリインデックスであると仮定します。

+0

これは実際には最初に働いていました(新たに追加された値が表示されました)。実行中のエラーは、エラーで終了します。** SSL SYSCALLエラー:Pythonとpsycopgで検出されたEOF ** –

+0

メモリの問題は、UPDATEクイーンで追加する10000を超える新しい値ではないためです。 –

+0

あなたはこのスレッドをお読みになりましたか? https://stackoverflow.com/questions/24130305/postgres-ssl-syscall-error-eof-detected-with-python-and-psycopg –

0

あなたはupdateをお探しですか?

update table_name 
    set column_name = ?; 

(パラメータを使用すると、クエリ文字列をいじるに非常に有利である)必要な値と?に記入します。

関連する問題