我已被存儲在如以下所示的熊貓數據幀股票價格數據(實際上它是在一個面板,但我它轉換爲一個數據幀)保存大熊貓數據幀到一個Django模型
date ticker close tsr
0 2013-03-28 abc 22.81 1.000439
1 2013-03-28 def 94.21 1.006947
2 2013-03-28 ghi 95.84 1.014180
3 2013-03-28 jkl 31.80 1.000000
4 2013-03-28 mno 32.10 1.003125
...many more rows
我要保存這個在Django模型,它看起來像這樣(相匹配的列名):
class HistoricalPrices(models.Model):
ticker = models.CharField(max_length=10)
date = models.DateField()
tsr = models.DecimalField()
close = models.DecimalField()
我想出迄今使用此保存它的最好的,其中df是我的數據框:
entries = []
for e in df.T.to_dict().values():
entries.append(HistoricalPrices(**e))
HistoricalPrices.objects.bulk_create(entries)
有沒有更好的方法來保存?
我看了看django-pandas,但看起來好像只是從數據庫中讀取。
有沒有辦法讓數據庫生成的自動ID返回到'DataFrame'? (我的Excel數據需要存儲在通過外鍵鏈接的多個Django模型中。) – Chris
您可以隨時使用[read_sql](http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_sql.html )使用所有自動生成的列獲取完整的df。如果這就是你所指的,django自己就會使用數據庫生成的'id'。 – Stefan
謝謝@Stefan,在我的情況下,確定我最新的行子集將是一個昂貴的操作,並可能出現錯誤。這是說替代[似乎](http://stackoverflow.com/questions/26770489/how-to-get-autoincrement-values-for-a-column-after-uploading-a-pandas-dataframe)被鎖定表和手動設置ID,或寫[通過CSV](http://stackoverflow.com/questions/31997859/bulk-insert-a-pandas-dataframe-using-sqlalchemy),所以也很可能打擊性能或丟失ID,也許這只是批量插入的一個基本限制。我會做更多的研究並報告回來。 – Chris