2015-10-04 49 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) 
相关问题