Вы делаете импорт sqlalchemy
как дБ? Кажется, вы думаете, что словарь может работать как словарь обновления первичного ключа, но я не думаю, что это так. Один из стандартных способов сделать это - docs и выглядит следующим образом:
table.update().where(table.c.id==7).values(name='foo')
Чтобы сделать это таким образом, вам нужно отфильтровать таблицу до одной строки, а затем запустить обновить в этой строке, используя данные в вашем фрейме данных. В противном случае, без запроса db.update обновит все в вашей таблице.
Попробуйте что-то вроде этого:
import pandas as pd
import sqlalchemy as db
metadata = db.MetaData()
table = db.Table('table', metadata,
db.Column('id', db.String(100), nullable=True),
db.Column('Cost', db.String(100), nullable=True),
extend_existing=True
)
df = pd.DataFrame({
'id': ['000074800795', '000074801136', '000074801299', '000074800300', '000074800955'],
'Cost': ['157.05974458228403', '80.637745302714', '7', '13', '10']
})
for index, row in df.iterrows():
id_value = row['id']
cost_value = row['Cost']
table.update().where(table.c.id == id_value).values(Cost=cost_value)
Конечно, мы можем внести изменения в стиль, но, надеюсь, это направит вас в правильном направлении.