Pandas SQL 쿼리의 SQL 테이블에서 기존 레코드를 삭제해야합니다. 예를 들어. SQL 테이블 :
Id Name Qualification
1 Rick Lawyer
2 John Engg
3 Gini Doctor
4 Bist Architect
5 mady lawyer
df :
Id Name Qualification
3 Gini Engg
4 Bist Lawyer
실시간으로 더 많은 열이 있으므로 업데이트 쿼리를 작성할 수 없기 때문에 팬더에서 내 테이블을 업데이트하는 쿼리를 어떻게 작성합니까? 우리가 할 수있는 한 가지는 먼저 동일한 ID를 가진 행을 삭제 한 다음 df를 테이블로 푸시하는 것입니다.
내가하려는 것은 SQL 테이블에서 레코드를 삭제하는 것입니다. 내가 한 것은
pd.read_sqlquery('''
DELETE FROM TABLE_NAME
WHERE Id in ({})
''').format(df2.Id.to_list())---
Getting Error
내 df2 ID를 쿼리에 어떻게 전달할 수 있습니까?
한 가지 옵션은 pandas의 업데이트 된 레코드를 별도의 테이블에 삽입하는 것입니다. 여기서 부르 자 records_updated
.
그런 다음 쿼리를 실행하여에서 찾은 ID가있는 원본 테이블 레코드에서 삭제 한 다음 원본 테이블에 레코드 records_updated
를 삽입 할 수 있습니다 records_updated
.
from sqlalchemy import create_engine
engine = create_engine('sqlite://', echo=False)
# save original records to 'records' table
df0.to_sql('records', con=engine)
# save updated records to 'records_updated' table
df.to_sql('records_updated', con=engine)
# delete updated records from 'records'
engine.execute("DELETE FROM records WHERE Id IN (SELECT Id FROM records_updated)")
# insert updated records from 'records_updated' to 'records'
engine.execute("INSERT INTO records SELECT * FROM records_updated")
# drop 'records table'
engine.execute("DROP TABLE records_updated")
# read from records
print(pd.read_sql('records', con=engine))
Name Qualification
Id
1 Rick Lawyer
2 John Engg
5 mady lawyer
3 Gini Engg
4 Bist Lawyer
PS SQL 구문은 방언에 따라 약간 다를 수 있습니다. 일부 방언에서는 DELETE 및 INSERT 작업을 단일 UPSERT로 결합하고 업데이트 된 레코드를 임시 테이블로 저장할 수도 있으므로 수동으로 삭제할 필요가 없습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다