找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 6350|回复: 11

[求助] PHYTHON读取MYSQL LONG BLOB到本地文件

1

主题

8

帖子

8

积分

贫民

积分
8
langhun1984 发表于 2018-4-8 10:16:20 | 显示全部楼层 |阅读模式
各位大神,小弟写了一个下载MYSQL LONG BLOB到文件的脚本,但是执行不通过,帮忙指点下啊:

import pymysql as lcdb

db = lcdb.connect(host="10.50.20.52",port=3306,user="root",password="mysql",database="mantis")
cur=db.cursor()
sql='select t.id,t.content from mantis_bug_file_table t where FROM_UNIXTIME(t.date_added,\'%Y-%m-%d\')>=\'2015-06-01\' limit 2'
#sql2='select t.bug_id,t.content from mantis_bug_file_table t where FROM_UNIXTIME(t.date_added,\'%Y-%m-%d\')>=\'2015-06-01\ and t.id='+xid+'limit 2'
try:
    cur.execute(sql)
    results=cur.fetchall()
    #print('id')
    for row in results:
        xid=row[0]
        print(xid)
        cur.execute('select t.bug_id,t.content from mantis_bug_file_table t where FROM_UNIXTIME(t.date_added,\'%Y-%m-%d\')>=\'2015-06-01\' and t.id='+str(xid))
        bugid,xcontent=cur.fetchone()
        print(bugid)

        #sys.stdin = open('E:\NEWHOPE\PHYTHON\test.doc','rb')
        #xfile=open('E:\NEWHOPE\PHYTHON\test.doc','wb')
        xfile=xcontent.read()
        sys.stdout = file('E:\NEWHOPE\PHYTHON\test.doc','wb')
        try:
            sys.stdout.write(xcontent)
        finally:
            sys.stdout.close()      
except Exception as ee:
    raise ee
finally:
    db.close()



报错如下:
File "<ipython-input-7-41e02a623faa>", line 21    sys.stdout = file('E:\NEWHOPE\PHYTHON\test.doc','wb')                     ^SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: malformed \N character escape

回复

使用道具 举报

0

主题

956

帖子

956

积分

圣骑士

积分
956
sheeboard 发表于 2018-4-8 10:30:18 | 显示全部楼层
斜杠没转义,再加一个试试。
回复 支持 反对

使用道具 举报

1

主题

8

帖子

8

积分

贫民

积分
8
langhun1984  楼主| 发表于 2018-4-10 15:12:21 | 显示全部楼层
改成了这个样子:sys.stdout = file('E:\\NEWHOPE\\PHYTHON\\test.doc','wb')

现在又报另外一个错误了:
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-6-5308d8be5ed6> in <module>()
     25             sys.stdout.close()
     26 except Exception as ee:
---> 27     raise ee
     28 finally:
     29     db.close()

<ipython-input-6-5308d8be5ed6> in <module>()
     18         #sys.stdin = open('E:\NEWHOPE\PHYTHON\test.doc','rb')
     19         #xfile=open('E:\NEWHOPE\PHYTHON\test.doc','wb')
---> 20         xfile=xcontent.read()
     21         sys.stdout = file('E:\\NEWHOPE\\PHYTHON\\test.doc','wb')
     22         try:

AttributeError: 'bytes' object has no attribute 'read'


有招吗? 大哥们
回复 支持 反对

使用道具 举报

0

主题

956

帖子

956

积分

圣骑士

积分
956
sheeboard 发表于 2018-4-10 22:50:32 | 显示全部楼层
本帖最后由 sheeboard 于 2018-4-10 22:52 编辑

输出的文件是word的doc文档吗?
回复 支持 反对

使用道具 举报

1

主题

8

帖子

8

积分

贫民

积分
8
langhun1984  楼主| 发表于 2018-4-11 14:08:52 | 显示全部楼层
@sheeboard , 源代码里查出来的记录确实不是doc,我修改了查询条件,指定查询一条doc的记录,结果依然报错,同样的错误呢,字段类型是 LONGBLOB的,从报针对错信息来看像这个字段类型的存储是BYTES,而READ方法至只能读取二进制呢?,有没有其他的写法? 针对MYSQL的LONGBLOB(BYTES)?
我查询的记录见附件图片。

2853


---------------------------------------------------------------------------AttributeError                            Traceback (most recent call last)<ipython-input-3-bd1304966ff2> in <module>()     25         #        sys.stdout.close()     26 except Exception as ee:---> 27     raise ee     28 finally:     29     db.close()<ipython-input-3-bd1304966ff2> in <module>()     18         #sys.stdin = open('E:\NEWHOPE\PHYTHON\test.doc','rb')     19         #xfile=open('E:\NEWHOPE\PHYTHON\test.doc','wb')---> 20         xfile=xcontent.read()     21         #sys.stdout = file('E:\NEWHOPE\PHYTHON\test.doc','wb')     22         #try:AttributeError: 'bytes' object has no attribute 'read'


mysq.png
回复 支持 反对

使用道具 举报

1

主题

8

帖子

8

积分

贫民

积分
8
langhun1984  楼主| 发表于 2018-4-17 15:03:02 | 显示全部楼层
有办法吗? 大神们
回复 支持 反对

使用道具 举报

1

主题

8

帖子

8

积分

贫民

积分
8
langhun1984  楼主| 发表于 2018-4-19 19:56:29 | 显示全部楼层
回复

使用道具 举报

1

主题

8

帖子

8

积分

贫民

积分
8
langhun1984  楼主| 发表于 2018-4-24 10:10:44 | 显示全部楼层
问题依然在,求助
回复 支持 反对

使用道具 举报

0

主题

956

帖子

956

积分

圣骑士

积分
956
sheeboard 发表于 2018-4-24 11:01:38 | 显示全部楼层
把doc文件换成text文件看能不能打开,如果能打开先确定mysql读取没问题,然后再结解决打不开doc文件的问题,doc文件不同于text文本,实质上是多个xml的压缩文件。
回复 支持 反对

使用道具 举报

1

主题

8

帖子

8

积分

贫民

积分
8
langhun1984  楼主| 发表于 2018-4-28 09:32:41 | 显示全部楼层
本帖最后由 langhun1984 于 2018-4-28 09:33 编辑

换成读取TXT文件了,AttributeError: 'bytes' object has no attribute 'read'   一样的这个错误。。。看来不是文件的问题,还是语法操作LONG BLOB的问题啊。。。有解吗?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表