gpt4 book ai didi

python - 在 BLOB 字段中保存字节字符串的问题(python,mysqldb)

转载 作者:行者123 更新时间:2023-12-01 09:33:08 24 4
gpt4 key购买 nike

我可以把我的电脑扔出窗外......

我想将字节字符串保存到 SQL 数据库中的 BLOB 字段。

例如:

a = 'example' # normal string
b = b'byteexample' # type bytestring

假设我的数据库中有一个名为“justatable”的表,其中有一个名为“ablob”的 BLOB 列,我会这样做:

sql_a = "INSERT INTO justatest(ablob) VALUES ('%s')" % (a)

sql_b = "INSERT INTO justatest(ablob) VALUES ('%s')" % (b)

执行时:

cursor.execute(sql_a) # works
cursor.execute(sql_b) # doesn't work

为什么 MySQLdb 会抛出错误???:ProgrammingError:(1064,“您的 SQL 语法有错误;请检查与您的 MariaDB 服务器版本对应的手册,以获取在 'byteexample' 附近使用的正确语法”) ' 在第 1 行")

为什么它适用于普通字符串而不适用于字节串?

最佳答案

这就是将字节串格式化为字符串时发生的情况:

>>> b = b'byteexample'
>>> sql_b = "INSERT INTO justatest(ablob) VALUES ('%s')" % (b)
>>> print(sql_b)
INSERT INTO justatest(ablob) VALUES ('b'byteexample'')

现在你明白为什么它不起作用了吗?

顺便说一句,您真的真的不应该使用字符串格式来构造 SQL 语句。很容易出现 SQL 注入(inject)。使用适当的 mysql 库来安全地准备语句。

关于python - 在 BLOB 字段中保存字节字符串的问题(python,mysqldb),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49778957/

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