⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pgmodule.c

📁 关系型数据库 Postgresql 6.5.2
💻 C
📖 第 1 页 / 共 4 页
字号:
static PyObject *pg_getattr(pgobject * self, char *name){	/*	 * Although we could check individually, there are only a few	 * attributes that don't require a live connection and unless someone	 * has an urgent need, this will have to do	 */	if (!self->cnx)	{		PyErr_SetString(PyExc_TypeError, "Connection is not valid");		return NULL;	}	/* list postgreSQL connection fields */	/* postmaster host */	if (!strcmp(name, "host"))	{		char	   *r = PQhost(self->cnx);		return r ? PyString_FromString(r) : PyString_FromString("localhost");	}	/* postmaster port */	if (!strcmp(name, "port"))		return PyInt_FromLong(atol(PQport(self->cnx)));	/* selected database */	if (!strcmp(name, "db"))		return PyString_FromString(PQdb(self->cnx));	/* selected options */	if (!strcmp(name, "options"))		return PyString_FromString(PQoptions(self->cnx));	/* selected postgres tty */	if (!strcmp(name, "tty"))		return PyString_FromString(PQtty(self->cnx));	/* error (status) message */	if (!strcmp(name, "error"))		return PyString_FromString(PQerrorMessage(self->cnx));	/* connection status : 1 - OK, 0 - BAD */	if (!strcmp(name, "status"))		return PyInt_FromLong(PQstatus(self->cnx) == CONNECTION_OK ? 1 : 0);	/* provided user name */	if (!strcmp(name, "user"))		return PyString_FromString("Deprecated facility");	/* return PyString_FromString(fe_getauthname("<unknown user>")); */	/* attributes list */	if (!strcmp(name, "__members__"))	{		PyObject   *list = PyList_New(8);		if (list)		{			PyList_SetItem(list, 0, PyString_FromString("host"));			PyList_SetItem(list, 1, PyString_FromString("port"));			PyList_SetItem(list, 2, PyString_FromString("db"));			PyList_SetItem(list, 3, PyString_FromString("options"));			PyList_SetItem(list, 4, PyString_FromString("tty"));			PyList_SetItem(list, 5, PyString_FromString("error"));			PyList_SetItem(list, 6, PyString_FromString("status"));			PyList_SetItem(list, 7, PyString_FromString("user"));		}		return list;	}	return Py_FindMethod(pgobj_methods, (PyObject *) self, name);}/* object type definition */staticforward PyTypeObject PgType = {	PyObject_HEAD_INIT(NULL)	0,							/* ob_size */	"pgobject",					/* tp_name */	sizeof(pgobject),			/* tp_basicsize */	0,							/* tp_itemsize */	/* methods */	(destructor) pg_dealloc,	/* tp_dealloc */	0,							/* tp_print */	(getattrfunc) pg_getattr,	/* tp_getattr */	0,							/* tp_setattr */	0,							/* tp_compare */	0,							/* tp_repr */	0,							/* tp_as_number */	0,							/* tp_as_sequence */	0,							/* tp_as_mapping */	0,							/* tp_hash */};/* query object methods */static struct PyMethodDef pgquery_methods[] = {	{"getresult", (PyCFunction) pgquery_getresult, 1, pgquery_getresult__doc__},	{"dictresult", (PyCFunction) pgquery_dictresult, 1, pgquery_dictresult__doc__},	{"fieldname", (PyCFunction) pgquery_fieldname, 1, pgquery_fieldname__doc__},	{"fieldnum", (PyCFunction) pgquery_fieldnum, 1, pgquery_fieldnum__doc__},	{"listfields", (PyCFunction) pgquery_listfields, 1, pgquery_listfields__doc__},	{"ntuples", (PyCFunction) pgquery_ntuples, 1, pgquery_ntuples__doc__},	{NULL, NULL}};/* gets query object attributes */static PyObject *pgquery_getattr(pgqueryobject * self, char *name){	/* list postgreSQL connection fields */	return Py_FindMethod(pgquery_methods, (PyObject *) self, name);}/* query type definition */staticforward PyTypeObject PgQueryType = {	PyObject_HEAD_INIT(NULL)	0,							/* ob_size */	"pgqueryobject",			/* tp_name */	sizeof(pgqueryobject),		/* tp_basicsize */	0,							/* tp_itemsize */	/* methods */	(destructor) pgquery_dealloc,		/* tp_dealloc */	(printfunc) pgquery_print,	/* tp_print */	(getattrfunc) pgquery_getattr,		/* tp_getattr */	0,							/* tp_setattr */	0,							/* tp_compare */	0,							/* tp_repr */	0,							/* tp_as_number */	0,							/* tp_as_sequence */	0,							/* tp_as_mapping */	0,							/* tp_hash */};/* --------------------------------------------------------------------- *//* MODULE FUNCTIONS */#ifdef DEFAULT_VARS/* gets default host */static char getdefhost__doc__[] ="get_defhost() -- return default database host.";static PyObject *pggetdefhost(PyObject * self, PyObject * args){	/* checks args */	if (!PyArg_ParseTuple(args, ""))	{		PyErr_SetString(PyExc_SyntaxError,						"method get_defhost() takes no parameter.");		return NULL;	}	Py_XINCREF(pg_default_host);	return pg_default_host;}/* sets default host */static char setdefhost__doc__[] ="set_defhost(string) -- set default database host. Return previous value.";static PyObject *pgsetdefhost(PyObject * self, PyObject * args){	char	   *temp = NULL;	PyObject   *old;	/* gets arguments */	if (!PyArg_ParseTuple(args, "z", &temp))	{		PyErr_SetString(PyExc_TypeError,						"set_defhost(name), with name (string/None).");		return NULL;	}	/* adjusts value */	old = pg_default_host;	if (temp)		pg_default_host = PyString_FromString(temp);	else	{		Py_INCREF(Py_None);		pg_default_host = Py_None;	}	return old;}/* gets default base */static char getdefbase__doc__[] ="get_defbase() -- return default database name.";static PyObject *pggetdefbase(PyObject * self, PyObject * args){	/* checks args */	if (!PyArg_ParseTuple(args, ""))	{		PyErr_SetString(PyExc_SyntaxError,						"method get_defbase() takes no parameter.");		return NULL;	}	Py_XINCREF(pg_default_base);	return pg_default_base;}/* sets default base */static char setdefbase__doc__[] ="set_defbase(string) -- set default database name. Return previous value";static PyObject *pgsetdefbase(PyObject * self, PyObject * args){	char	   *temp = NULL;	PyObject   *old;	/* gets arguments */	if (!PyArg_ParseTuple(args, "z", &temp))	{		PyErr_SetString(PyExc_TypeError,						"set_defbase(name), with name (string/None).");		return NULL;	}	/* adjusts value */	old = pg_default_base;	if (temp)		pg_default_base = PyString_FromString(temp);	else	{		Py_INCREF(Py_None);		pg_default_base = Py_None;	}	return old;}/* gets default options */static char getdefopt__doc__[] ="get_defopt() -- return default database options.";static PyObject *pggetdefopt(PyObject * self, PyObject * args){	/* checks args */	if (!PyArg_ParseTuple(args, ""))	{		PyErr_SetString(PyExc_SyntaxError,						"method get_defopt() takes no parameter.");		return NULL;	}	Py_XINCREF(pg_default_opt);	return pg_default_opt;}/* sets default opt */static char setdefopt__doc__[] ="set_defopt(string) -- set default database options. Return previous value.";static PyObject *pgsetdefopt(PyObject * self, PyObject * args){	char	   *temp = NULL;	PyObject   *old;	/* gets arguments */	if (!PyArg_ParseTuple(args, "z", &temp))	{		PyErr_SetString(PyExc_TypeError,						"set_defopt(name), with name (string/None).");		return NULL;	}	/* adjusts value */	old = pg_default_opt;	if (temp)		pg_default_opt = PyString_FromString(temp);	else	{		Py_INCREF(Py_None);		pg_default_opt = Py_None;	}	return old;}/* gets default tty */static char getdeftty__doc__[] ="get_deftty() -- return default database debug terminal.";static PyObject *pggetdeftty(PyObject * self, PyObject * args){	/* checks args */	if (!PyArg_ParseTuple(args, ""))	{		PyErr_SetString(PyExc_SyntaxError,						"method get_deftty() takes no parameter.");		return NULL;	}	Py_XINCREF(pg_default_tty);	return pg_default_tty;}/* sets default tty */static char setdeftty__doc__[] ="set_deftty(string) -- set default database debug terminal. ""Return previous value.";static PyObject *pgsetdeftty(PyObject * self, PyObject * args){	char	   *temp = NULL;	PyObject   *old;	/* gets arguments */	if (!PyArg_ParseTuple(args, "z", &temp))	{		PyErr_SetString(PyExc_TypeError,						"set_deftty(name), with name (string/None).");		return NULL;	}	/* adjusts value */	old = pg_default_tty;	if (temp)		pg_default_tty = PyString_FromString(temp);	else	{		Py_INCREF(Py_None);		pg_default_tty = Py_None;	}	return old;}/* gets default username */static char getdefuser__doc__[] ="get_defuser() -- return default database username.";static PyObject *pggetdefuser(PyObject * self, PyObject * args){	/* checks args */	if (!PyArg_ParseTuple(args, ""))	{		PyErr_SetString(PyExc_SyntaxError,						"method get_defuser() takes no parameter.");		return NULL;	}	Py_XINCREF(pg_default_user);	return pg_default_user;}/* sets default username */static char setdefuser__doc__[] ="set_defuser() -- set default database username. Return previous value.";static PyObject *pgsetdefuser(PyObject * self, PyObject * args){	char	   *temp = NULL;	PyObject   *old;	/* gets arguments */	if (!PyArg_ParseTuple(args, "z", &temp))	{		PyErr_SetString(PyExc_TypeError,						"set_defuser(name), with name (string/None).");		return NULL;	}	/* adjusts value */	old = pg_default_user;	if (temp)		pg_default_user = PyString_FromString(temp);	else	{		Py_INCREF(Py_None);		pg_default_user = Py_None;	}	return old;}/* sets default password */static char setdefpasswd__doc__[] ="set_defpasswd() -- set default database password.";static PyObject *pgsetdefpasswd(PyObject * self, PyObject * args){	char	   *temp = NULL;	PyObject   *old;	/* gets arguments */	if (!PyArg_ParseTuple(args, "z", &temp))	{		PyErr_SetString(PyExc_TypeError,				"set_defpasswd(password), with password (string/None).");		return NULL;	}	/* adjusts value */	old = pg_default_passwd;	if (temp)		pg_default_passwd = PyString_FromString(temp);	else	{		Py_INCREF(Py_None);		pg_default_passwd = Py_None;	}	Py_INCREF(Py_None);	return Py_None;}/* gets default port */static char getdefport__doc__[] ="get_defport() -- return default database port.";static PyObject *pggetdefport(PyObject * self, PyObject * args){	/* checks args */	if (!PyArg_ParseTuple(args, ""))	{		PyErr_SetString(PyExc_SyntaxError,						"method get_defport() takes no parameter.");		return NULL;	}	Py_XINCREF(pg_default_port);	return pg_default_port;}/* sets default port */static char setdefport__doc__[] ="set_defport(integer) -- set default database port. Return previous value.";static PyObject *pgsetdefport(PyObject * self, PyObject * args){	long int	port = -2;	PyObject   *old;	/* gets arguments */	if ((!PyArg_ParseTuple(args, "l", &port)) || (port < -1))	{		PyErr_SetString(PyExc_TypeError, "set_defport(port), with port "						"(positive integer/-1).");		return NULL;	}	/* adjusts value */	old = pg_default_port;	if (port != -1)		pg_default_port = PyLong_FromLong(port);	else	{		Py_INCREF(Py_None);		pg_default_port = Py_None;	}	return old;}#endif	 /* DEFAULT_VARS *//* List of functions defined in the module */static struct PyMethodDef pg_methods[] = {	{"connect", (PyCFunction) pgconnect, 3, connect__doc__},#ifdef DEFAULT_VARS	{"get_defhost", pggetdefhost, 1, getdefhost__doc__},	{"set_defhost", pgsetdefhost, 1, setdefhost__doc__},	{"get_defbase", pggetdefbase, 1, getdefbase__doc__},	{"set_defbase", pgsetdefbase, 1, setdefbase__doc__},	{"get_defopt", pggetdefopt, 1, getdefopt__doc__},	{"set_defopt", pgsetdefopt, 1, setdefopt__doc__},	{"get_deftty", pggetdeftty, 1, getdeftty__doc__},	{"set_deftty", pgsetdeftty, 1, setdeftty__doc__},	{"get_defport", pggetdefport, 1, getdefport__doc__},	{"set_defport", pgsetdefport, 1, setdefport__doc__},	{"get_defuser", pggetdefuser, 1, getdefuser__doc__},	{"set_defuser", pgsetdefuser, 1, setdefuser__doc__},	{"set_defpasswd", pgsetdefpasswd, 1, setdefpasswd__doc__},#endif	 /* DEFAULT_VARS */	{NULL, NULL}				/* sentinel */};static char pg__doc__[] = "Python interface to PostgreSQL DB";/* Initialization function for the module */void		init_pg(void);		/* Python doesn't prototype this */voidinit_pg(void){	PyObject   *mod,			   *dict,			   *v;	/* Initialize here because some WIN platforms get confused otherwise */	PglargeType.ob_type = PgType.ob_type = PgQueryType.ob_type = &PyType_Type;	/* Create the module and add the functions */	mod = Py_InitModule4("_pg", pg_methods, pg__doc__, NULL, PYTHON_API_VERSION);	dict = PyModule_GetDict(mod);	/* Add some symbolic constants to the module */	PGError = PyString_FromString("pg.error");	PyDict_SetItemString(dict, "error", PGError);	/* Make the version available */	v = PyString_FromString(PyPgVersion);	PyDict_SetItemString(dict, "version", v);	PyDict_SetItemString(dict, "__version__", v);	Py_DECREF(v);#ifdef LARGE_OBJECTS	/* create mode for large objects */	PyDict_SetItemString(dict, "INV_READ", PyInt_FromLong(INV_READ));	PyDict_SetItemString(dict, "INV_WRITE", PyInt_FromLong(INV_WRITE));	/* position flags for lo_lseek */	PyDict_SetItemString(dict, "SEEK_SET", PyInt_FromLong(SEEK_SET));	PyDict_SetItemString(dict, "SEEK_CUR", PyInt_FromLong(SEEK_CUR));	PyDict_SetItemString(dict, "SEEK_END", PyInt_FromLong(SEEK_END));#endif	 /* LARGE_OBJECTS */#ifdef DEFAULT_VARS	/* prepares default values */	Py_INCREF(Py_None);	pg_default_host = Py_None;	Py_INCREF(Py_None);	pg_default_base = Py_None;	Py_INCREF(Py_None);	pg_default_opt = Py_None;	Py_INCREF(Py_None);	pg_default_port = Py_None;	Py_INCREF(Py_None);	pg_default_tty = Py_None;	Py_INCREF(Py_None);	pg_default_user = Py_None;	Py_INCREF(Py_None);	pg_default_passwd = Py_None;#endif	 /* DEFAULT_VARS */	/* Check for errors */	if (PyErr_Occurred())		Py_FatalError("can't initialize module _pg");}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -