将二进制数据保存到MySQLdb-Python
我在谷歌上搜索过这个网站,但没有具体的内容出现,也无法让它正常工作。代码如下:将二进制数据保存到MySQLdb-Python,python,mysql,binary,blob,Python,Mysql,Binary,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
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()
摘要:
cursor.execute()
意味着游标将为您转义“%s”
,MySQLdb也会为你这样做conn.commit()
,如果您不使用事务性引擎,则不需要这样做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()
摘要:
cursor.execute()
意味着游标将为您转义“%s”
,MySQLdb也会为你这样做conn.commit()
,如果您不使用事务性引擎,则不需要这样做1.我有联系。。。2.有趣的。。。3.没有这些单引号就无法执行。。。完全我会再试一次。4.除此之外。。。问题非常具体,“如何最好地存储blob/二进制数据”。我已连接,如果我从脚本中删除binData,所有工作都正常-即使使用单引号。这个问题是独立的,因为所有其他因素都考虑在内了。非常感谢您的帮助。ok只是检查一下。你的查询有很多问题,所以我想确保你熟悉MySQLdb并涵盖我能想到的所有基础。我不明白当你转义整个查询时它是如何工作的,而且,根据你的代码,sql不是字符串,它是元组,MySQLdb.escape\u string()给出元组时引发异常。谢谢Jesse!接近!不再出现TypeError,但仍返回500#上面清单中的2是关键。我没有插入,而是将binData周围的字符串连接起来。
%s
周围没有引号这里是我的一个工作应用程序中的一行,它将jpg存储在mysql数据库中:c.execute(““更新项集图像=%s,其中id=%s”“,(img,id))
img是一个二进制字符串,是jpg文件1的原始内容。我有联系。。。2.有趣的。。。3.没有这些单引号就无法执行。。。完全我会再试一次。4.除此之外。。。问题非常具体,“如何最好地存储blob/二进制数据”。我已连接,如果我从脚本中删除binData,所有工作都正常-即使使用单引号。这个问题是独立的,因为所有其他因素都考虑在内了。非常感谢您的帮助。ok只是检查一下。你的查询有很多问题,所以我想确保你熟悉MySQLdb并涵盖我能想到的所有基础。我不明白当你转义整个查询时它是如何工作的,而且,根据你的代码,sql不是字符串,它是元组,MySQLdb.escape\u string()给出元组时引发异常。谢谢Jesse!接近!不再出现TypeError,但仍返回500#上面清单中的2是关键。我没有插入,而是连接了binData周围的字符串。%s
周围没有引号这里是我的一个工作应用程序中的一行,它将jpg存储在mysql数据库中:c.execute(“'updateitems SET image=%s,其中id=%s”“,(img,id))
img是一个二进制字符串,是jpg文件的原始内容