New submission from Florent Xicluna <la...@yahoo.fr>: Since buffer() is deprecated in Python 2.7, it should not be used for BLOB input/output.
SAMPLES = ( ('unicode', u''), ('bytes', ''), ('buffer', buffer('')), # ('bytearray', bytearray('')), # unsupported # ('memoryview', memoryview('')) # unsupported ) import sqlite3 conn = sqlite3.connect(':memory:') c = conn.cursor() c.execute('create table test(s varchar, b blob)') c.executemany('insert into test(s, b) values (?, ?)', SAMPLES) c.execute('select s, b from test') print('\n'.join(str(l) for l in c.fetchall())) # Output: # (u'unicode', u'') # (u'bytes', u'') # (u'buffer', <read-write buffer ptr 0x1d8ccd0, size 0 at 0x1d8cc80>) # # Errors and warnings: # __main__:4: DeprecationWarning: buffer() not supported in 3.x # sqlite3.InterfaceError: Error binding parameter 1 - probably unsupported type. Here is the Python 3 input/output: SAMPLES = ( # Python3 ('unicode', ''), ('bytes', b''), ('bytearray', bytearray(b'')), ('memoryview', memoryview(b'')) ) # ('unicode', '') # ('bytes', b'') # ('bytearray', b'') # ('memoryview', b'') ---------- components: Extension Modules messages: 97943 nosy: flox priority: high severity: normal status: open title: sqlite only accept buffer() for BLOB objects (input/output) type: behavior versions: Python 2.7 _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue7723> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com