mirror of
https://github.com/PyMySQL/mysqlclient.git
synced 2026-03-13 08:00:02 +08:00
* Check for module initialization failure (extremely rare)
* The MySQL FIELD_TYPE converter can now be a sequence of 2-tuples. Item 0 is a bit mask (using FLAG.*) which must be matched. This should be an integer. Item 1 is the conversion function. If item 0 is not an integer, then this function is considered the default converter for this FIELD_TYPE. Note that these tuples are considered when the query has been executed and the result is available, so it doesn't add a per-row overhead. * As a result of the above, BINARY BLOB fields are now returned as character arrays using the array.array class. Non-BINARY BLOB fields (i.e. TEXT) are returned as strings. If unicode is enabled, they are returned as unicode strings. * Bump version to 0.9.3b3.
This commit is contained in:
@@ -20,7 +20,7 @@ version_info = (
|
||||
9,
|
||||
3,
|
||||
"beta",
|
||||
2)
|
||||
3)
|
||||
if version_info[3] == "final": __version__ = "%d.%d.%d" % version_info[:3]
|
||||
else: __version__ = "%d.%d.%d%1.1s%d" % version_info[:5]
|
||||
|
||||
|
||||
@@ -112,6 +112,7 @@ class Connection(ConnectionBase):
|
||||
u = unicode
|
||||
conv[FIELD_TYPE.STRING] = u
|
||||
conv[FIELD_TYPE.VAR_STRING] = u
|
||||
conv[FIELD_TYPE.BLOB].insert(-1, (None, u))
|
||||
self._make_connection(args, kwargs2)
|
||||
self.converter[types.StringType] = self.string_literal
|
||||
if hasattr(types, 'UnicodeType'):
|
||||
|
||||
@@ -26,7 +26,7 @@ MySQL.connect().
|
||||
"""
|
||||
|
||||
from _mysql import string_literal, escape_sequence, escape_dict, escape, NULL
|
||||
from constants import FIELD_TYPE
|
||||
from constants import FIELD_TYPE, FLAG
|
||||
from sets import *
|
||||
from times import *
|
||||
from string import split
|
||||
@@ -132,6 +132,10 @@ conversions = {
|
||||
FIELD_TYPE.DATETIME: DateTime_or_None,
|
||||
FIELD_TYPE.TIME: Time_or_None,
|
||||
FIELD_TYPE.DATE: Date_or_None,
|
||||
FIELD_TYPE.BLOB: [
|
||||
(FLAG.BINARY, char_array),
|
||||
(None, None),
|
||||
],
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#define version_info "(0,9,3,'beta',2)"
|
||||
#define version_info "(0,9,3,'beta',3)"
|
||||
#define __version__ "0.9.3"
|
||||
/*
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
@@ -362,6 +362,38 @@ _mysql_ResultObject_Initialize(
|
||||
fun = Py_None;
|
||||
Py_INCREF(Py_None);
|
||||
}
|
||||
if (PySequence_Check(fun)) {
|
||||
int j, n2=PySequence_Size(fun);
|
||||
PyObject *fun2=NULL;
|
||||
for (j=0; j<n2; j++) {
|
||||
PyObject *t = PySequence_GetItem(fun, j);
|
||||
if (!t) continue;
|
||||
if (!PyTuple_Check(t)) goto cleanup;
|
||||
if (PyTuple_GET_SIZE(t) == 2) {
|
||||
long mask;
|
||||
PyObject *pmask=NULL;
|
||||
pmask = PyTuple_GET_ITEM(t, 0);
|
||||
fun2 = PyTuple_GET_ITEM(t, 1);
|
||||
if (PyInt_Check(pmask)) {
|
||||
mask = PyInt_AS_LONG(pmask);
|
||||
if (mask & fields[i].flags) {
|
||||
break;
|
||||
}
|
||||
else {
|
||||
continue;
|
||||
}
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
cleanup:
|
||||
Py_DECREF(t);
|
||||
}
|
||||
if (!fun2) fun2 = Py_None;
|
||||
Py_INCREF(fun2);
|
||||
Py_DECREF(fun);
|
||||
fun = fun2;
|
||||
}
|
||||
PyTuple_SET_ITEM(self->converter, i, fun);
|
||||
}
|
||||
return 0;
|
||||
@@ -2370,7 +2402,7 @@ init_mysql(void)
|
||||
PyObject *dict, *module, *emod, *edict;
|
||||
module = Py_InitModule4("_mysql", _mysql_methods, _mysql___doc__,
|
||||
(PyObject *)NULL, PYTHON_API_VERSION);
|
||||
|
||||
if (!module) return; /* this really should never happen */
|
||||
_mysql_ConnectionObject_Type.ob_type = &PyType_Type;
|
||||
_mysql_ResultObject_Type.ob_type = &PyType_Type;
|
||||
#if PY_VERSION_HEX >= 0x02020000
|
||||
|
||||
@@ -18,7 +18,7 @@ embedded_server = (mysqlclient == 'mysqld')
|
||||
name = "MySQL-%s" % os.path.basename(sys.executable)
|
||||
if embedded_server:
|
||||
name = name + "-embedded"
|
||||
version = "0.9.3b2"
|
||||
version = "0.9.3b3"
|
||||
|
||||
# include files and library locations should cover most platforms
|
||||
include_dirs = [
|
||||
@@ -88,10 +88,10 @@ long_description = \
|
||||
MySQLdb is an interface to the popular MySQL database server for Python.
|
||||
The design goals are:
|
||||
|
||||
- Compliance with Python database API version 2.0
|
||||
- Thread-safety
|
||||
- Thread-friendliness (threads will not block each other)
|
||||
- Compatibility with MySQL-3.22 and later
|
||||
- Compliance with Python database API version 2.0
|
||||
- Thread-safety
|
||||
- Thread-friendliness (threads will not block each other)
|
||||
- Compatibility with MySQL-3.22 and later
|
||||
|
||||
This module should be mostly compatible with an older interface
|
||||
written by Joe Skinner and others. However, the older version is
|
||||
|
||||
Reference in New Issue
Block a user