Skip to content

Commit c81ad64

Browse files
author
José Alberto Goncalves
committed
Added functions for setting the decimal separator character.
1 parent 3a2fe35 commit c81ad64

1 file changed

Lines changed: 34 additions & 0 deletions

File tree

‎src/pyodbcmodule.cpp‎

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

497519
static 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
580612
static 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

Comments
 (0)