我有一個擁有大約3000萬條目的數據庫,這是一個很多,我不希望任何事情,但更大的數據庫條目工作麻煩。獲取postgresql uniqueue日期的內存有效方法?
但是,使用py-postgresql和.prepare()
聲明我希望我可以在「yield
」的基礎上獲取條目,從而避免只用數據庫中的結果來填充我的內存,而我完全不能?
這是我到目前爲止有:
import postgresql
user = 'test'
passwd = 'test
db = postgresql.open('pq://'+user+':'+passwd+'@192.168.1.1/mydb')
results = db.prepare("SELECT time time FROM mytable")
uniqueue_days = []
with db.xact():
for row in result():
if not row['time'] in uniqueue_days:
uniqueue_days.append(row['time'])
print(uniqueue_days)
甚至前往if not row['time'] in uniqueue_days:
我耗盡內存,這是不是太奇怪考慮result()
之前可能獲取befor通過他們循環所有的結果? 有沒有辦法讓圖書館postgresql
變成「頁面」或者批量減少結果,比如說每輪有60k,或者甚至可以重複查詢來完成更多的工作?
在此先感謝!
編輯:應該提及數據庫中的日期是Unix時間戳,並且我打算在將它們添加到uniqueue_days
列表中之前將它們轉換爲%Y-%m-%d
格式。
謝謝,第一個例子給我的結果我需要直接從蝙蝠。第二個我已經想到了,但希望有更好的解決方案。花了一分鐘在postgresql內部計算結果,這比我希望的要好得多。所以謝謝! – Torxed
考慮到您有數百萬行,並且您打算使用該字段來分類數據,您可能需要考慮在「時間」字段中添加索引。 – 2014-02-05 10:01:21
我已經考慮過了,但是對於postgresql如何索引事物以及如何設置它有點新,但它在我的待辦事項列表中肯定會加速操作! – Torxed