mirror of
https://github.com/PyMySQL/mysqlclient.git
synced 2026-03-13 08:00:02 +08:00
PyPy fixes, and probably some reference issues for CPython too.
Derived from a patch at https://bitbucket.org/pypy/compatibility/wiki/edit/mysql-python
This commit is contained in:
@@ -48,6 +48,11 @@ except ImportError:
|
||||
|
||||
import array
|
||||
|
||||
try:
|
||||
ArrayType = array.ArrayType
|
||||
except AttributeError:
|
||||
ArrayType = array.array
|
||||
|
||||
try:
|
||||
set
|
||||
except NameError:
|
||||
@@ -133,7 +138,7 @@ conversions = {
|
||||
ListType: escape_sequence,
|
||||
DictType: escape_dict,
|
||||
InstanceType: Instance2Str,
|
||||
array.ArrayType: array2Str,
|
||||
ArrayType: array2Str,
|
||||
StringType: Thing2Literal, # default
|
||||
UnicodeType: Unicode2Str,
|
||||
ObjectType: Instance2Str,
|
||||
|
||||
12
_mysql.c
12
_mysql.c
@@ -481,6 +481,7 @@ _mysql_ResultObject_Initialize(
|
||||
PyObject *pmask=NULL;
|
||||
pmask = PyTuple_GET_ITEM(t, 0);
|
||||
fun2 = PyTuple_GET_ITEM(t, 1);
|
||||
Py_XINCREF(fun2);
|
||||
if (PyInt_Check(pmask)) {
|
||||
mask = PyInt_AS_LONG(pmask);
|
||||
flags = fields[i].flags;
|
||||
@@ -501,8 +502,10 @@ _mysql_ResultObject_Initialize(
|
||||
}
|
||||
Py_DECREF(t);
|
||||
}
|
||||
if (!fun2) fun2 = Py_None;
|
||||
Py_INCREF(fun2);
|
||||
if (!fun2) {
|
||||
fun2 = Py_None;
|
||||
Py_INCREF(fun2);
|
||||
}
|
||||
Py_DECREF(fun);
|
||||
fun = fun2;
|
||||
}
|
||||
@@ -1190,7 +1193,9 @@ _escape_item(
|
||||
"no default type converter defined");
|
||||
goto error;
|
||||
}
|
||||
Py_INCREF(d);
|
||||
quoted = PyObject_CallFunction(itemconv, "OO", item, d);
|
||||
Py_DECREF(d);
|
||||
Py_DECREF(itemconv);
|
||||
error:
|
||||
return quoted;
|
||||
@@ -2985,6 +2990,9 @@ _mysql_NewException(
|
||||
if (!(e = PyDict_GetItemString(edict, name)))
|
||||
return NULL;
|
||||
if (PyDict_SetItemString(dict, name, e)) return NULL;
|
||||
#ifdef PYPY_VERSION
|
||||
Py_INCREF(e);
|
||||
#endif
|
||||
return e;
|
||||
}
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ import unittest
|
||||
import MySQLdb
|
||||
import warnings
|
||||
|
||||
warnings.filterwarnings('error')
|
||||
warnings.filterwarnings('ignore')
|
||||
|
||||
class test_MySQLdb(capabilities.DatabaseTest):
|
||||
|
||||
|
||||
@@ -3,6 +3,8 @@ import dbapi20
|
||||
import unittest
|
||||
import MySQLdb
|
||||
from configdb import connection_kwargs
|
||||
import warnings
|
||||
warnings.simplefilter("ignore")
|
||||
|
||||
class test_MySQLdb(dbapi20.DatabaseAPI20Test):
|
||||
driver = MySQLdb
|
||||
|
||||
@@ -4,7 +4,8 @@ import _mysql
|
||||
import MySQLdb
|
||||
from MySQLdb.constants import FIELD_TYPE
|
||||
from configdb import connection_factory
|
||||
|
||||
import warnings
|
||||
warnings.simplefilter("ignore")
|
||||
|
||||
class TestDBAPISet(unittest.TestCase):
|
||||
def test_set_equality(self):
|
||||
|
||||
Reference in New Issue
Block a user