繁体   English   中英

如何将字节串传递给PyGreSQL?

[英]How to pass a bytestring to PyGreSQL?

我有一个PostgreSQL表,其bytea类型。 从SQLite移植该表时,我遇到了一个问题-我不知道如何将原始二进制数据传递给SQL查询。 我使用的框架是PyGreSQL。 我想坚持使用DB-API 2.0接口以避免大量转换。
与经典的(美元符号参数)和SQLite(问号参数)不同,该接口需要指定类型(类似于旧Python的%格式)。
我要传递的数据是一个PNG文件,使用open()方法中的'rb'标志进行二进制读取。
查询代码如下所示:

db = pgdb.connect(args)
c = db.cursor()
c.execute('INSERT INTO tbl VALUES (%b)', (b'test_bytes',))

unsupported format character 'b' (0x62) at index 54给出了错误的unsupported format character 'b' (0x62) at index 54 ,并且不允许进行格式化。 如何解决这个问题?

并不是真正的解决方案,但是足够好的解决方法。 我决定使用psycopg2代替PyGreSQL因为它受到更多的支持和普遍使用,因此查找有关任何常见问题的信息更加容易。
在那里,解决方案是对每种类型都使用%s ,我发现它使用%s是Pythonic(不需要考虑动态类型语言中的类型)

因此,我的查询如下所示:

c.execute('INSERT INTO tbl VALUES (%s)', (b'test_bytes',))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM