2017-08-14 66 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]); 

假設表名的第一行是主索引。

+0

它實際上在開始時運行(我印刷了新的附加值),它在運行時位以錯誤結束:** SSL SYSCALL錯誤:使用python和psycopg檢測到EOF ** –

+0

我認爲它不能歸因於內存問題,因爲它們不超過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 = ?; 

填寫的?你想要的值(使用參數,但最好到改寫(munging)查詢字符串)。