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,