gpt4 book ai didi

python - 将二进制数据保存到 MySQLdb - Python

转载 作者:行者123 更新时间:2023-11-29 00:57:56 25 4
gpt4 key购买 nike

我用谷歌搜索并搜索了这个网站,但没有找到任何具体内容,也无法正常工作。这是代码:

    binData = ''.join(map(lambda x: chr(x % 256), attach.attcoll))

sql_stmt = """INSERT INTO attachments (attno,filename,fileextension,projNo,procNo,wpattachment) \
VALUES ('%s','%s','%s','%s','%s','%s') ON DUPLICATE KEY UPDATE filename='%s',fileextension='%s'""", attach.attno,\
attach.filename,attach.fileextension,attach.projNo,attach.procNo,binData,attach.filename,attach.fileextension

try:
cursor.execute(MySQLdb.escape_string(sql_stmt))
conn.commit()

attach.attcoll 是通过 JSON 从客户端的 SQLite blob 和 java 代码传入的数据。然后我想用 MySQLdb 将 binData 写入 MySQL,但不断收到 TypeError 和 500 的返回码。关于如何解决这个问题的任何想法。我想将 binData 存储到 MySQL blob 中。

最佳答案

这里有一堆东西:

binData = ''.join(map(lambda x: chr(x % 256), attach.attcoll))
sql_stmt = """INSERT INTO attachments (attno,filename,fileextension,projNo,procNo,wpattachment)
VALUES (%s,%s,%s,%s,%s,%s) ON DUPLICATE KEY UPDATE filename=%s,fileextension=%s"""

params = (attach.attno,attach.filename,attach.fileextension,attach.projNo,attach.procNo,binData,attach.filename,attach.fileextension)

cursor.execute(sql_stmt, params)
conn.commit()

总结:

  1. 确保您首先连接到数据库(如果您不知道如何连接,请阅读 MySQLdb 文档)
  2. 您不想转义整个查询,只转义数据部分,将语句和数据分别传递给 cursor.execute() 意味着游标将为您转义。
  3. 不要引用你的'%s',MySQLdb 也会为你做这件事。
  4. 您的数据库是事务性的(即 InnoDB)吗,这就是您使用 conn.commit() 的原因,如果您不使用事务性引擎,则没有必要。
  5. 在没有看到您如何构建数据库表的情况下,我无法保证这会奏效。作为练习,您是否尝试过创建一个非常简单的数据库表并练习使用 MySQLdb 向其中插入数据,以便熟悉 API?

关于python - 将二进制数据保存到 MySQLdb - Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5112072/

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