Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 使用Python3中的SQLAlchemy在sqlite3数据库中存储和读取文件_Python 3.x_Sqlite_Sqlalchemy - Fatal编程技术网

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和可能的原始文件名。如果在放入文件时数据库变大,则正常的数据库操作(不接触文件数据)也会受到影响。这就是为什么人们通常希望将文件排除在数据库之外。