gpt4 book ai didi

python - 在 MySQL blob 中插入 python 二进制字符串对象

转载 作者:行者123 更新时间:2023-11-28 20:07:57 34 4
gpt4 key购买 nike

我想将包含二进制数据的字符串对象插入到 MySQL blob 列中。但是,我不断收到 MySQL 语法错误。

我制作了一个用于调试的小脚本:

import MySQLdb
import array
import random

conn = MySQLdb.connect(host="localhost", user="u", passwd="p", db="cheese")
cur = conn.cursor()

a = array.array('f')
for n in range(1,5):
a.append(random.random())
bd = a.tostring()
print type(bd) # gives str
query = '''INSERT INTO cheese (data) VALUES (%s)''' % bd
cur.execute(query)

结果(但不是每次...)

ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near '?fJ\x95<=
\xad9>\xf3\xec\xe5>)' at line 1")

问题显然归结为 MySQL 不喜欢的二进制数据中的某些字符。是否有将二进制数据放入 MySQL 数据库的故障安全方法?

最佳答案

改为这样做:

query = '''INSERT INTO cheese (data) VALUES (%s)'''
cur.execute(query, (bd,))

这不是执行 Python 级别的字符串格式化,而是使用 MySQL 特定的格式化,包括在要嵌入查询的字符串中转义对 MySQL 具有特殊意义的字符。

关于python - 在 MySQL blob 中插入 python 二进制字符串对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15504246/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com