[Python-porting] Details about the psycopg porting
Antoine Pitrou
solipsis at pitrou.net
Mon Jan 24 16:20:48 CET 2011
Hello,
> I've written to the Psycopg mailing list about the details in the
> psycopg2 porting to Python 3. You can also read everything here:
> <http://initd.org/psycopg/articles/2011/01/24/psycopg2-porting-python-3-report/>.
>
> There is a couple of points still open, so if you want to take a look
> at them I'd be happy to receive comments before releasing the code.
>From your article:
> the data (bytes) from the libpq are passed to file.write() using
> PyObject_CallFunction(func, "s#", buffer, len)”
You shouldn't use "s#" as it will implicitly decode the buffer to unicode.
Instead, use "y#" to write bytes.
> Is there an interface in Python 3 to know if a file is binary or text?
`isinstance(myfile, io.TextIOBase)` should do the trick. Or the corresponding C
call, using PyObject_IsInstance().
> In binary mode the file always returns bytes (str in py2, unicode in py3)
I suppose you mean "str in py2, bytes in py3".
> bytea fields are returned as MemoryView, from which is easy to get bytes
Is this because it is easier for you to return a memoryview? Otherwise it would
make more sense to return a bytes object.
Regards
Antoine.
More information about the Python-porting
mailing list