Mercurial > cpython-lru_cache-weakref
comparison Modules/_sqlite/statement.c @ 47294:4fe192d48960 legacy-trunk
Renamed PyString to PyBytes
| author | Christian Heimes <christian@cheimes.de> |
|---|---|
| date | Mon, 26 May 2008 12:51:38 +0000 |
| parents | 6db392ac9f4e |
| children | 52294af4b663 |
comparison
equal
deleted
inserted
replaced
| 47292:abafccfe7501 | 47294:4fe192d48960 |
|---|---|
| 58 char* sql_cstr; | 58 char* sql_cstr; |
| 59 | 59 |
| 60 self->st = NULL; | 60 self->st = NULL; |
| 61 self->in_use = 0; | 61 self->in_use = 0; |
| 62 | 62 |
| 63 if (PyString_Check(sql)) { | 63 if (PyBytes_Check(sql)) { |
| 64 sql_str = sql; | 64 sql_str = sql; |
| 65 Py_INCREF(sql_str); | 65 Py_INCREF(sql_str); |
| 66 } else if (PyUnicode_Check(sql)) { | 66 } else if (PyUnicode_Check(sql)) { |
| 67 sql_str = PyUnicode_AsUTF8String(sql); | 67 sql_str = PyUnicode_AsUTF8String(sql); |
| 68 if (!sql_str) { | 68 if (!sql_str) { |
| 75 } | 75 } |
| 76 | 76 |
| 77 self->in_weakreflist = NULL; | 77 self->in_weakreflist = NULL; |
| 78 self->sql = sql_str; | 78 self->sql = sql_str; |
| 79 | 79 |
| 80 sql_cstr = PyString_AsString(sql_str); | 80 sql_cstr = PyBytes_AsString(sql_str); |
| 81 | 81 |
| 82 rc = sqlite3_prepare(connection->db, | 82 rc = sqlite3_prepare(connection->db, |
| 83 sql_cstr, | 83 sql_cstr, |
| 84 -1, | 84 -1, |
| 85 &self->st, | 85 &self->st, |
| 117 paramtype = TYPE_INT; | 117 paramtype = TYPE_INT; |
| 118 } else if (PyLong_CheckExact(parameter)) { | 118 } else if (PyLong_CheckExact(parameter)) { |
| 119 paramtype = TYPE_LONG; | 119 paramtype = TYPE_LONG; |
| 120 } else if (PyFloat_CheckExact(parameter)) { | 120 } else if (PyFloat_CheckExact(parameter)) { |
| 121 paramtype = TYPE_FLOAT; | 121 paramtype = TYPE_FLOAT; |
| 122 } else if (PyString_CheckExact(parameter)) { | 122 } else if (PyBytes_CheckExact(parameter)) { |
| 123 paramtype = TYPE_STRING; | 123 paramtype = TYPE_STRING; |
| 124 } else if (PyUnicode_CheckExact(parameter)) { | 124 } else if (PyUnicode_CheckExact(parameter)) { |
| 125 paramtype = TYPE_UNICODE; | 125 paramtype = TYPE_UNICODE; |
| 126 } else if (PyBuffer_Check(parameter)) { | 126 } else if (PyBuffer_Check(parameter)) { |
| 127 paramtype = TYPE_BUFFER; | 127 paramtype = TYPE_BUFFER; |
| 129 paramtype = TYPE_INT; | 129 paramtype = TYPE_INT; |
| 130 } else if (PyLong_Check(parameter)) { | 130 } else if (PyLong_Check(parameter)) { |
| 131 paramtype = TYPE_LONG; | 131 paramtype = TYPE_LONG; |
| 132 } else if (PyFloat_Check(parameter)) { | 132 } else if (PyFloat_Check(parameter)) { |
| 133 paramtype = TYPE_FLOAT; | 133 paramtype = TYPE_FLOAT; |
| 134 } else if (PyString_Check(parameter)) { | 134 } else if (PyBytes_Check(parameter)) { |
| 135 paramtype = TYPE_STRING; | 135 paramtype = TYPE_STRING; |
| 136 } else if (PyUnicode_Check(parameter)) { | 136 } else if (PyUnicode_Check(parameter)) { |
| 137 paramtype = TYPE_UNICODE; | 137 paramtype = TYPE_UNICODE; |
| 138 } else { | 138 } else { |
| 139 paramtype = TYPE_UNKNOWN; | 139 paramtype = TYPE_UNKNOWN; |
| 140 } | 140 } |
| 141 | 141 |
| 142 if (paramtype == TYPE_STRING && !allow_8bit_chars) { | 142 if (paramtype == TYPE_STRING && !allow_8bit_chars) { |
| 143 string = PyString_AS_STRING(parameter); | 143 string = PyBytes_AS_STRING(parameter); |
| 144 for (c = string; *c != 0; c++) { | 144 for (c = string; *c != 0; c++) { |
| 145 if (*c & 0x80) { | 145 if (*c & 0x80) { |
| 146 PyErr_SetString(pysqlite_ProgrammingError, "You must not use 8-bit bytestrings unless you use a text_factory that can interpret 8-bit bytestrings (like text_factory = str). It is highly recommended that you instead just switch your application to Unicode strings."); | 146 PyErr_SetString(pysqlite_ProgrammingError, "You must not use 8-bit bytestrings unless you use a text_factory that can interpret 8-bit bytestrings (like text_factory = str). It is highly recommended that you instead just switch your application to Unicode strings."); |
| 147 rc = -1; | 147 rc = -1; |
| 148 goto final; | 148 goto final; |
| 162 break; | 162 break; |
| 163 case TYPE_FLOAT: | 163 case TYPE_FLOAT: |
| 164 rc = sqlite3_bind_double(self->st, pos, PyFloat_AsDouble(parameter)); | 164 rc = sqlite3_bind_double(self->st, pos, PyFloat_AsDouble(parameter)); |
| 165 break; | 165 break; |
| 166 case TYPE_STRING: | 166 case TYPE_STRING: |
| 167 string = PyString_AS_STRING(parameter); | 167 string = PyBytes_AS_STRING(parameter); |
| 168 rc = sqlite3_bind_text(self->st, pos, string, -1, SQLITE_TRANSIENT); | 168 rc = sqlite3_bind_text(self->st, pos, string, -1, SQLITE_TRANSIENT); |
| 169 break; | 169 break; |
| 170 case TYPE_UNICODE: | 170 case TYPE_UNICODE: |
| 171 stringval = PyUnicode_AsUTF8String(parameter); | 171 stringval = PyUnicode_AsUTF8String(parameter); |
| 172 string = PyString_AsString(stringval); | 172 string = PyBytes_AsString(stringval); |
| 173 rc = sqlite3_bind_text(self->st, pos, string, -1, SQLITE_TRANSIENT); | 173 rc = sqlite3_bind_text(self->st, pos, string, -1, SQLITE_TRANSIENT); |
| 174 Py_DECREF(stringval); | 174 Py_DECREF(stringval); |
| 175 break; | 175 break; |
| 176 case TYPE_BUFFER: | 176 case TYPE_BUFFER: |
| 177 if (PyObject_AsCharBuffer(parameter, &buffer, &buflen) == 0) { | 177 if (PyObject_AsCharBuffer(parameter, &buffer, &buflen) == 0) { |
| 195 if (pysqlite_BaseTypeAdapted) { | 195 if (pysqlite_BaseTypeAdapted) { |
| 196 return 1; | 196 return 1; |
| 197 } | 197 } |
| 198 | 198 |
| 199 if (PyInt_CheckExact(obj) || PyLong_CheckExact(obj) | 199 if (PyInt_CheckExact(obj) || PyLong_CheckExact(obj) |
| 200 || PyFloat_CheckExact(obj) || PyString_CheckExact(obj) | 200 || PyFloat_CheckExact(obj) || PyBytes_CheckExact(obj) |
| 201 || PyUnicode_CheckExact(obj) || PyBuffer_Check(obj)) { | 201 || PyUnicode_CheckExact(obj) || PyBuffer_Check(obj)) { |
| 202 return 0; | 202 return 0; |
| 203 } else { | 203 } else { |
| 204 return 1; | 204 return 1; |
| 205 } | 205 } |
| 324 const char* tail; | 324 const char* tail; |
| 325 int rc; | 325 int rc; |
| 326 char* sql_cstr; | 326 char* sql_cstr; |
| 327 sqlite3_stmt* new_st; | 327 sqlite3_stmt* new_st; |
| 328 | 328 |
| 329 sql_cstr = PyString_AsString(self->sql); | 329 sql_cstr = PyBytes_AsString(self->sql); |
| 330 | 330 |
| 331 rc = sqlite3_prepare(self->db, | 331 rc = sqlite3_prepare(self->db, |
| 332 sql_cstr, | 332 sql_cstr, |
| 333 -1, | 333 -1, |
| 334 &new_st, | 334 &new_st, |
