2015-10-04 48 views
1

我想從我的硬盤存儲和讀取文件(例如myfile.dat)到使用Python3訪問SQLAlchemy的sqlite3數據庫中。在Python3中使用SQLAlchemy存儲和讀取sqlite3數據庫中的文件

我想爲Person-table的每一行存儲一張圖片。我只想在顯示該人的數據時在GUI中顯示該圖片。

+2

你能說說爲什麼嗎?通常文件是分開存儲的,因爲SQLite沒有爲此目的進行優化。 –

+0

@MikkoOhtamaa請參閱最新的問題文本。我不知道應該有哪些優化。一個文件是數據。數據庫用於存儲數據。我沒有看到問題。 – buhtz

+0

大多數Python框架(Django)都這樣做,以便他們將文件存儲在磁盤上。每個文件都有隨機的ID。在數據庫中,它們只存儲對此文件的引用:隨機文件ID和可能的原始文件名。 –

回答

1

只需從硬盤中以二進制模式讀取文件並將其作爲BLOB存儲到數據庫。從數據庫

with open('image.png', 'rb') as f: 
    fcontent = f.read() 

獲取BLOB(如image),並將其饋送到一個Python的字節流。 然後,您可以使用它作爲wxPython中的Stream-Object

# read the BLOB as 'image' from database 
# and use it 
stream = io.BytesIO(image) 
image = wx.Image(stream) 
bitmap = wx.Bitmap(image) 
相關問題