Python 3.x 使用Python3中的SQLAlchemy在sqlite3数据库中存储和读取文件
我想将一个文件(例如,Python 3.x 使用Python3中的SQLAlchemy在sqlite3数据库中存储和读取文件,python-3.x,sqlite,sqlalchemy,Python 3.x,Sqlite,Sqlalchemy,我想将一个文件(例如,myfile.dat)从我的硬盘存储并读取到一个sqlite3数据库中,通过Python3通过SQLAlchemy进行访问 我想为每行Person表存储一张图片。我只想在显示此人数据时在GUI中显示该图片。只需以二进制模式从硬盘读取文件,并将其作为BLOB存储到数据库中即可 with open('image.png', 'rb') as f: fcontent = f.read() 从数据库中获取BLOB(如图像),并将其提供给Python字节流。 然后您可以
myfile.dat
)从我的硬盘存储并读取到一个sqlite3数据库中,通过Python3通过SQLAlchemy进行访问
我想为每行Person表存储一张图片。我只想在显示此人数据时在GUI中显示该图片。只需以二进制模式从硬盘读取文件,并将其作为BLOB存储到数据库中即可
with open('image.png', 'rb') as f:
fcontent = f.read()
从数据库中获取BLOB(如图像
),并将其提供给Python字节流。
然后您可以将其用作wxPython中的流对象
# read the BLOB as 'image' from database
# and use it
stream = io.BytesIO(image)
image = wx.Image(stream)
bitmap = wx.Bitmap(image)
你能解释为什么吗?通常文件是单独存储的,因为SQLite没有为此目的进行优化。@Mikkoohtama请查看更新的问题文本。我不知道应该有哪些优化。文件就是数据。数据库是用来存储数据的。我看没有问题。大多数Python框架(Django)这样做是为了将文件存储在磁盘上。每个文件都有随机id。在数据库中,它们只存储对此文件的引用:随机文件id和可能的原始文件名。如果在放入文件时数据库变大,则正常的数据库操作(不接触文件数据)也会受到影响。这就是为什么人们通常希望将文件排除在数据库之外。