@@ -493,6 +493,28 @@ static PyObject* mod_timestampfromticks(PyObject* self, PyObject* args)
493493 return PyDateTime_FromTimestamp (args);
494494}
495495
496+ static PyObject* mod_setdecimalsep (PyObject* self, PyObject* args)
497+ {
498+ UNUSED (self);
499+ if (!PyString_Check (PyTuple_GET_ITEM (args, 0 )) && !PyUnicode_Check (PyTuple_GET_ITEM (args, 0 )))
500+ return PyErr_Format (PyExc_TypeError, " argument 1 must be a string or unicode object" );
501+
502+ PyObject* value = PyUnicode_FromObject (PyTuple_GetItem (args, 0 ));
503+ if (value)
504+ {
505+ if (PyBytes_Check (value) && PyBytes_Size (value) == 1 )
506+ chDecimal = (Py_UNICODE)PyBytes_AS_STRING (value)[0 ];
507+ if (PyUnicode_Check (value) && PyUnicode_GET_SIZE (value) == 1 )
508+ chDecimal = PyUnicode_AS_UNICODE (value)[0 ];
509+ }
510+ Py_RETURN_NONE;
511+ }
512+
513+ static PyObject* mod_getdecimalsep (PyObject* self)
514+ {
515+ UNUSED (self);
516+ return PyUnicode_FromUnicode (&chDecimal, 1 );
517+ }
496518
497519static char connect_doc[] =
498520 " connect(str, autocommit=False, ansi=False, timeout=0, **kwargs) --> Connection\n "
@@ -575,6 +597,16 @@ static char datasources_doc[] =
575597 " \n " \
576598 " Returns a dictionary mapping available DSNs to their descriptions." ;
577599
600+ static char setdecimalsep_doc[] =
601+ " setDecimalSeparator(string) -> None\n " \
602+ " \n " \
603+ " Sets the decimal separator character used when parsing NUMERIC from the database." ;
604+
605+ static char getdecimalsep_doc[] =
606+ " getDecimalSeparator() -> string\n " \
607+ " \n " \
608+ " Gets the decimal separator character used when parsing NUMERIC from the database." ;
609+
578610
579611#ifdef PYODBC_LEAK_CHECK
580612static PyObject* mod_leakcheck (PyObject* self, PyObject* args)
@@ -628,6 +660,8 @@ static PyMethodDef pyodbc_methods[] =
628660 { " connect" , (PyCFunction)mod_connect, METH_VARARGS |METH_KEYWORDS , connect_doc },
629661 { " TimeFromTicks" , (PyCFunction)mod_timefromticks, METH_VARARGS , timefromticks_doc },
630662 { " DateFromTicks" , (PyCFunction)mod_datefromticks, METH_VARARGS , datefromticks_doc },
663+ { " setDecimalSeparator" , (PyCFunction)mod_setdecimalsep, METH_VARARGS , setdecimalsep_doc },
664+ { " getDecimalSeparator" , (PyCFunction)mod_getdecimalsep, METH_NOARGS , getdecimalsep_doc },
631665 { " TimestampFromTicks" , (PyCFunction)mod_timestampfromticks, METH_VARARGS , timestampfromticks_doc },
632666 { " dataSources" , (PyCFunction)mod_datasources, METH_NOARGS , datasources_doc },
633667
0 commit comments