Python MySQL 在 Blob 中插入和检索列表

标签 python mysql string list blob

我正在尝试将元素列表插入 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/

相关文章:

python - Pandas 的自然排序

python - 如何访问模板中的表单日期字段

python - 对齐 float 并指定字符串格式的精度

php - 我想要一个不同的变量来存储通过 stristr 但不能包含除这 3 个不同的东西之外的任何东西

python - 如何将一个列表拆分为多个列表?

c# - 连接可变数量的字符串

Python:Beautifulsoup 为 tis-620、字符集 windows-874 返回错误的解码

php - 最有效的数据收集方式?

php - MySql:根据时间戳和动态间隔选择数据

string - Rust 中的 `str` 有什么用处吗?