使用sybpydb读取sybase blob的问题

时间:2019-07-01 18:03:26

标签: python sybase sybase-iq

我只能从Blob中读取32,768个字节。 我如何阅读其余部分?

import sybpydb

conn = sybpydb.connect(servername='...', dsn='Charset=iso_1;BulkLogin=true;Database=...;chainxacts=off', user='...', password='...')

cur.execute('USE ...')
cur.execute('SELECT blob_column FROM table_name')

l, = cur.fetchone()
xml = bytearray()
while True:
    b = bytearray(1024)
    n = l.readinto(b)
    if n is None: break
    xml.extend(b[:n])

print(len(xml))

我得到了截断的数据,找不到读取其余数据的方法。

http://infocenter.sybase.com/help/topic/com.sybase.infocenter.dc20155.1570127/doc/pdf/ocs_nfb.pdf讨论了如何在C语言中处理截断的数据(第167页)。

SQLSetStatementAttr(stmt, SQL_ATTR_LOBLOCATOR_FETCHSIZE, (SQLPOINTER)32768, 0);

找不到使用python / sybpydb进行相同操作的方法。

我也尝试使用批量游标:

cur = conn.blkcursor()
# cur.execute('USE ...') <-- How to set the DB name with bulk cursor?
cur.copy('table_name', direction='out')
row = cur.roxfer()

此失败说表未找到。 使用常规光标,我执行 USE 语句来设置数据库名称。无法找到使用blkcursor的方法。 在DSN中传递 Database = dbname 似乎无效。

0 个答案:

没有答案