Обновите один столбец в sql из DataFrame в Python - PullRequest
0 голосов
/ 07 мая 2018

Используя панд, я прочитал запрос из sql, используя что-то вроде этого:

df = pd.read_sql(query, engine) 

Этот фрейм данных довольно большой, и я обновил один столбец с именем 'weight', выполнив некоторые вычисления.

Я хочу обновить этот столбец моим новым столбцом в DataFrame. Как я могу сделать это, чтобы обновление столбца соответствовало правильным строкам?

Например, скажем, у меня есть пример df, например: df =

 type color  size weight
 10  green  12     13
 23  green  40     10 
 16    red  40     15 

где df ['weight'] - мой недавно вычисленный столбец, который я хочу обновить в db.

В данный момент БД выглядит так: Таблица =

 type color  size weight
 10  green  12     null
 23  green  40     null 
 16    red  40     null 

Моя ожидаемая обновленная таблица sql:

 type color  size weight
 10  green  12     13
 23  green  40     10 
 16    red  40     15 

Я использую psychopg2 и ниже мой мыслительный процесс для кода:

UPDATE table 
SET weight = df.weight
WHERE table.type = df.type
AND table.size = df.size
AND table.color = df.color 

Как лучше написать код обновления на Python для обновления базы данных?

1 Ответ

0 голосов
/ 07 мая 2018

Вы можете попробовать записать df в pandas как таблицу temp в вашей базе данных, а затем с помощью sql создать соответствующие столбцы

connect=('yourconnectionfordb')
df.to_sql('test', connect, if_exists='replace')

query = "UPDATE table AS f" + \
      " SET weight = test.weight" + \
      " FROM test AS t" + \
      " WHERE f.type = t.type " + \
      " AND f.size = t.size" + \
      " AND f.color = t.color"

with connect.begin() as conn:
   conn.execute(query)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...