Обновить (update) базу данных с помощью pandas

Работаю с базой данных в ms sql, приходит файл dbf, по всем строкам которого, если id таковых есть в базе, необходимо проставить признак "1". Файл dbf перевел в эксель, чтобы проще было работать. Насколько я понимаю, pandas не заточен под update запросы, видел пару примеров через временные таблицы, но до конца не разобрался, к тому же 300+ тысяч строк как-то многовато для временных таблиц (с другой стороны можно разбить). Можно ли работу организовать через Pandas или есть более предпочтительные варианты? Сам код прописывал так:

import pandas as pd
from sqlalchemy import create_engine
from tqdm import tqdm
server = "server"
dbname = "database"
uname = "user"
pword = "password"
eng = create_engine(
    "mssql+pyodbc://" + uname + ":" + pword + "@" + server + "/" + dbname + "?driver=SQL+Server")
dbf = pd.read_excel('bk.xlsx', dtype={"ID": str})#ID - строка, так как много цифр
for ind in tqdm(range(len(dbf))):
    id_excel = dbf.iloc[ind]["ID"]
    query = (f"""
     Update Pers
SET WorkComment = '1'
WHERE ID='{id_excel}'
   
   """)
dbf.to_sql('table', engine, if_exists='replace')# вот на этом месте и застрял

Ответы (1 шт):

Автор решения: Андрей Ковров

В общем, я забыл про такую прекраснейшую функцию как execute. Спасибо пользователю с ником CrazyElf, что напомнил.

import pandas as pd
from sqlalchemy import create_engine
from tqdm import tqdm
server = "server"
dbname = "database"
uname = "user"
pword = "password"
eng = create_engine(
    "mssql+pyodbc://" + uname + ":" + pword + "@" + server + "/" + dbname + "?driver=SQL+Server")
#теперь коннект к бд
conn = eng.connect()
dbf = pd.read_excel('bk.xlsx', dtype={"ID": str})
for ind in tqdm(range(len(dbf))):
    id_excel = dbf.iloc[ind]["ID"]
    query = (f"""
     Update Pers
SET WorkComment = '1'
WHERE ID='{id_excel}'
   
   """)
#ниже отправляю по одному в бд
    conn.execute(query)
conn.close()
eng.dispose()
→ Ссылка