我正在尝试将元素列表插入 MySQL 数据库(插入 Blob 列)。这是我的代码示例:
myList = [1345,22,3,4,5]
myListString = str(myList)
myQuery = 'INSERT INTO table (blobData) VALUES (%s)'
cursor.execute(query, myListString)
一切正常,我的列表存储在我的数据库中。但是,当我想检索我的列表时,因为它现在是一个字符串,我不知道如何获取真正的整数列表而不是字符串。
例如,如果现在我这样做:
myQuery = 'SELECT blobData FROM db.table'
cursor.execute(myQuery)
myRetrievedList = cursor.fetch_all()
print myRetrievedList[0]
我会得到:
[
而不是:
1345
有什么方法可以将我的字符串 [1345,22,3,4,5] 转换为列表吗?
最佳答案
您必须为列表选择一种数据格式,按照我的偏好顺序,常见的解决方案是:
json
-- 快速、可读、允许嵌套数据,如果您的表曾被任何其他系统使用过,则非常有用。检查 blob 格式是否有效。使用 json.dumps() 和 json.loads() 与字符串/blob 表示形式相互转换repr()
——快速、可读、跨 Python 版本工作。如果有人进入你的数据库是不安全的。用户repr()
和eval()
从字符串/blob 格式获取数据pickle
——快速、不可读、不能跨多种架构工作(据我所知)。不检查 blob 是否被截断。使用cPickle.dumps(..., protocol=(cPickle.HIGHEST_PROTOCOL))
和cPickle.loads(...)
转换您的数据。
关于Python MySQL 在 Blob 中插入和检索列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23068220/