簡體   English   中英

在 django 中使用 pandas to_sql 時數據庫架構發生變化

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM