[英]Database schema changing when using pandas to_sql in django
我正在嘗試使用以下代碼將 dataframe 插入現有的 django 數據庫 model :
database_name = settings.DATABASES['default']['NAME']
database_url = 'sqlite:///{database_name}'.format(database_name=database_name)
engine = create_engine(database_url)
dataframe.to_sql(name='table_name', con=engine, if_exists='replace', index = False)
運行此命令后,數據庫架構更改也消除了主鍵並導致以下錯誤: django.db.utils.OperationalError: foreign key mismatch
注意:pandas 列名和數據庫列匹配。
似乎問題來自to_sql
方法中的if_exists='replace'
參數。 pandas 文檔說明如下:
if_exists{'fail', 'replace', 'append'}, default 'fail' 如果表已經存在,如何表現。
失敗:引發 ValueError。
替換:在插入新值之前刪除表。
append:將新值插入現有表。
如果該表已經存在,則“replace”參數會將該表替換為由預定義模式定義的另一個表。 在您的情況下,它用基表替換了由 django 遷移創建的表,從而丟失了主鍵、外鍵和所有內容。 嘗試用 'append' 替換 'replace' 參數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.