Changeset 583


Ignore:
Timestamp:
Nov 21, 2015, 7:53:02 PM (4 years ago)
Author:
cito
Message:

Make inserttable() run on Python 3

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/module/pgmodule.c

    r582 r583  
    14141414                                *buffer,
    14151415                                *bufpt;
     1416        char            *enc=NULL;
    14161417        size_t          bufsiz;
    14171418        PyObject        *list,
     
    15431544                                        bufsiz = 0;
    15441545                        }
    1545                         else if (PyStr_Check(item))
     1546                        else if (PyBytes_Check(item))
    15461547                        {
    1547                                 const char* t = PyBytes_AS_STRING(item);
     1548                                const char* t = PyBytes_AsString(item);
    15481549                                while (*t && bufsiz)
    15491550                                {
     
    15561557                                }
    15571558                        }
     1559                        else if (PyUnicode_Check(item))
     1560                        {
     1561                                PyObject *s;
     1562                                if (!enc)
     1563                                        enc = (char *)pg_encoding_to_char(
     1564                                                PQclientEncoding(self->cnx));
     1565                                if (!strcmp(enc, "UTF8"))
     1566                                        s = PyUnicode_AsUTF8String(item);
     1567                                else if (!strcmp(enc, "LATIN1"))
     1568                                        s = PyUnicode_AsLatin1String(item);
     1569                                else if (!strcmp(enc, "SQL_ASCII"))
     1570                                        s = PyUnicode_AsASCIIString(item);
     1571                                else
     1572                                        s = PyUnicode_AsEncodedString(item, enc, "strict");
     1573                                const char* t = PyBytes_AsString(s);
     1574                                while (*t && bufsiz)
     1575                                {
     1576                                        if (*t == '\\' || *t == '\t' || *t == '\n')
     1577                                        {
     1578                                                *bufpt++ = '\\'; --bufsiz;
     1579                                                if (!bufsiz) break;
     1580                                        }
     1581                                        *bufpt++ = *t++; --bufsiz;
     1582                                }
     1583                                Py_DECREF(s);
     1584                        }
    15581585                        else if (PyInt_Check(item) || PyLong_Check(item))
    15591586                        {
    15601587                                PyObject* s = PyObject_Str(item);
    1561                                 const char* t = PyBytes_AsString(s);
     1588                                const char* t = PyStr_AsString(s);
    15621589                                while (*t && bufsiz)
    15631590                                {
     
    15691596                        {
    15701597                                PyObject* s = PyObject_Repr(item);
    1571                                 const char* t = PyBytes_AsString(s);
     1598                                const char* t = PyStr_AsString(s);
    15721599                                while (*t && bufsiz)
    15731600                                {
Note: See TracChangeset for help on using the changeset viewer.