20
20
unsigned int port = 0;
21
21
unsigned int client_flag = 0;
22
22
static char *kwlist[] = { "host", "user", "passwd", "db", "port",
23
"unix_socket", "conv",
23
"unix_socket", "decoder_stack",
24
24
"connect_timeout", "compress",
25
25
"named_pipe", "init_command",
26
26
"read_default_file", "read_default_group",
33
33
*read_default_file=NULL,
34
34
*read_default_group=NULL;
36
self->converter = NULL;
36
self->decoder_stack = NULL;
38
38
check_server_init(-1);
39
39
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|ssssisOiiisssiOi:connect",
41
41
&host, &user, &passwd, &db,
42
&port, &unix_socket, &conv,
42
&port, &unix_socket, &decoder_stack,
44
44
&compress, &named_pipe,
45
45
&init_command, &read_default_file,
52
/* Keep the converter mapping or a blank mapping dict */
53
decoder_stack = PyList_New(0);
59
self->converter = conv;
55
Py_INCREF(decoder_stack);
56
self->decoder_stack = decoder_stack;
61
58
#define _stringsuck(d,t,s) {t=PyMapping_GetItemString(s,#d);\
62
59
if(t){d=PyString_AsString(t);Py_DECREF(t);}\
205
return visit(self->converter, arg);
197
if (self->decoder_stack)
198
return visit(self->decoder_stack, arg);
209
202
static int _mysql_ConnectionObject_clear(
210
203
_mysql_ConnectionObject *self)
212
Py_XDECREF(self->converter);
213
self->converter = NULL;
205
Py_XDECREF(self->decoder_stack);
206
self->decoder_stack = NULL;
222
char _mysql_escape__doc__[] =
223
"escape(obj, dict) -- escape any special characters in object obj\n\
224
using mapping dict to provide quoting functions for each type.\n\
225
Returns a SQL literal string.";
231
PyObject *o=NULL, *d=NULL;
232
if (!PyArg_ParseTuple(args, "O|O:escape", &o, &d))
235
if (!PyMapping_Check(d)) {
236
PyErr_SetString(PyExc_TypeError,
237
"argument 2 must be a mapping");
240
return _escape_item(o, d);
243
PyErr_SetString(PyExc_TypeError,
244
"argument 2 must be a mapping");
247
return _escape_item(o,
248
((_mysql_ConnectionObject *) self)->converter);
252
215
char _mysql_escape_string__doc__[] =
253
216
"escape_string(s) -- quote any SQL-interpreted characters in string s.\n\
255
Use connection.escape_string(s), if you use it at all.\n\
256
_mysql.escape_string(s) cannot handle character sets. You are\n\
257
probably better off using connection.escape(o) instead, since\n\
258
it will escape entire sequences as well as strings.";
217
If you want quotes around your value, use string_literal(s) instead.\n\
261
221
_mysql_escape_string(
269
229
str = PyString_FromStringAndSize((char *) NULL, size*2+1);
270
230
if (!str) return PyErr_NoMemory();
271
231
out = PyString_AS_STRING(str);
272
#if MYSQL_VERSION_ID < 32321
273
len = mysql_escape_string(out, in, size);
275
check_server_init(NULL);
276
if (self && self->open)
277
len = mysql_real_escape_string(&(self->connection), out, in, size);
279
len = mysql_escape_string(out, in, size);
232
len = mysql_real_escape_string(&(self->connection), out, in, size);
281
233
if (_PyString_Resize(&str, len) < 0) return NULL;
285
237
char _mysql_string_literal__doc__[] =
286
"string_literal(obj) -- converts object obj into a SQL string literal.\n\
238
"string_literal(s) -- converts string s into a SQL string literal.\n\
287
239
This means, any special SQL characters are escaped, and it is enclosed\n\
288
240
within single quotes. In other words, it performs:\n\
290
\"'%s'\" % escape_string(str(obj))\n\
292
Use connection.string_literal(obj), if you use it at all.\n\
293
_mysql.string_literal(obj) cannot handle character sets.";
242
\"'%s'\" % escape_string(s)\n\
296
246
_mysql_string_literal(
297
247
_mysql_ConnectionObject *self,
300
PyObject *str, *s, *o, *d;
303
if (!PyArg_ParseTuple(args, "O|O:string_literal", &o, &d)) return NULL;
306
in = PyString_AsString(s);
307
size = PyString_GET_SIZE(s);
253
if (!PyArg_ParseTuple(args, "s#:string_literal", &in, &size)) return NULL;
308
254
str = PyString_FromStringAndSize((char *) NULL, size*2+3);
309
255
if (!str) return PyErr_NoMemory();
310
256
out = PyString_AS_STRING(str);
311
#if MYSQL_VERSION_ID < 32321
312
len = mysql_escape_string(out+1, in, size);
314
check_server_init(NULL);
315
if (self && self->open)
316
len = mysql_real_escape_string(&(self->connection), out+1, in, size);
318
len = mysql_escape_string(out+1, in, size);
257
len = mysql_real_escape_string(&(self->connection), out+1, in, size);
320
258
*out = *(out+len+1) = '\'';
321
259
if (_PyString_Resize(&str, len+2) < 0) return NULL;
994
931
_mysql_ResultObject *r=NULL;
996
933
check_connection(self);
997
arglist = Py_BuildValue("(OiO)", self, 0, self->converter);
934
arglist = Py_BuildValue("(OiO)", self, 0, self->decoder_stack);
998
935
if (!arglist) goto error;
999
936
kwarglist = PyDict_New();
1000
937
if (!kwarglist) goto error;
1054
991
_mysql_ResultObject *r=NULL;
1056
993
check_connection(self);
1057
arglist = Py_BuildValue("(OiO)", self, 1, self->converter);
994
arglist = Py_BuildValue("(OiO)", self, 1, self->decoder_stack);
1058
995
if (!arglist) return NULL;
1059
996
kwarglist = PyDict_New();
1060
997
if (!kwarglist) goto error;