Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将二进制数据保存到MySQLdb-Python_Python_Mysql_Binary_Blob - Fatal编程技术网

将二进制数据保存到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()
摘要:

  • 确保首先连接到数据库(如果不知道如何连接,请阅读MySQLdb文档)
  • 您不想转义整个查询,只想转义数据部分,将语句和数据分别传递给
    cursor.execute()
    意味着游标将为您转义
  • 不要引用你的
    “%s”
    ,MySQLdb也会为你这样做
  • 您的数据库是否是事务性的(即InnoDB),这就是为什么您要使用
    conn.commit()
    ,如果您不使用事务性引擎,则不需要这样做
  • 如果不了解您是如何构造db表的,我不能保证这会起作用。作为练习,您是否尝试过创建一个非常简单的数据库表并使用MySQLdb将其插入其中,以便熟悉API
  • 这里有很多东西:

    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()
    
    摘要:

  • 确保首先连接到数据库(如果不知道如何连接,请阅读MySQLdb文档)
  • 您不想转义整个查询,只想转义数据部分,将语句和数据分别传递给
    cursor.execute()
    意味着游标将为您转义
  • 不要引用你的
    “%s”
    ,MySQLdb也会为你这样做
  • 您的数据库是否是事务性的(即InnoDB),这就是为什么您要使用
    conn.commit()
    ,如果您不使用事务性引擎,则不需要这样做
  • 如果不了解您是如何构造db表的,我不能保证这会起作用。作为练习,您是否尝试过创建一个非常简单的数据库表并使用MySQLdb将其插入其中,以便熟悉API

  • 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文件的原始内容