mirror of
https://github.com/PyMySQL/mysqlclient.git
synced 2025-08-15 11:10:58 +08:00
Support field name other than UTF-8 (#301)
This commit is contained in:
@ -1037,15 +1037,39 @@ _mysql_ResultObject_describe(
|
||||
{
|
||||
PyObject *d;
|
||||
MYSQL_FIELD *fields;
|
||||
MY_CHARSET_INFO cs;
|
||||
int isutf8 = 0;
|
||||
unsigned int i, n;
|
||||
|
||||
check_result_connection(self);
|
||||
|
||||
mysql_get_character_set_info(&result_connection(self)->connection, &cs);
|
||||
if (strncmp("utf8", cs.name, 4) == 0) { // utf8, utf8mb3, utf8mb4
|
||||
isutf8 = 1;
|
||||
}
|
||||
|
||||
n = mysql_num_fields(self->result);
|
||||
fields = mysql_fetch_fields(self->result);
|
||||
if (!(d = PyTuple_New(n))) return NULL;
|
||||
for (i=0; i<n; i++) {
|
||||
PyObject *t;
|
||||
#ifdef IS_PY3K
|
||||
PyObject *name;
|
||||
if (isutf8) {
|
||||
name = PyUnicode_DecodeUTF8(fields[i].name, fields[i].name_length, "replace");
|
||||
} else {
|
||||
name = PyUnicode_Decode(fields[i].name, fields[i].name_length, cs.name, "replace");
|
||||
}
|
||||
if (name == NULL) {
|
||||
goto error;
|
||||
}
|
||||
|
||||
t = Py_BuildValue("(Niiiiii)",
|
||||
name,
|
||||
#else
|
||||
t = Py_BuildValue("(siiiiii)",
|
||||
fields[i].name,
|
||||
#endif
|
||||
(long) fields[i].type,
|
||||
(long) fields[i].max_length,
|
||||
(long) fields[i].length,
|
||||
|
Reference in New Issue
Block a user