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

📄 csqlrelay.c

📁 适合于Unix/Linux下的一个持久数据库连接池
💻 C
📖 第 1 页 / 共 4 页
字号:
/* Copyright (c) 2000 Roman Milner   See the file COPYING for more information */#ifdef __CYGWIN__	#include <windows.h>#endif#include <Python.h>#include <sqlrelay/sqlrclient.h>#if PY_MAJOR_VERSION >= 2#if PY_MINOR_VERSION >= 3	#define SUPPORTS_UNSIGNED	1#endif#endifextern "C" {#define NEED_IS_NUMBER_TYPE_CHAR#include <datatypes.h>PyObject *decimalmodule=NULL;PyObject *decimal=NULL;static PyObject *sqlrcon_alloc(PyObject *self, PyObject *args) {  sqlrconnection *sqlrcon;  char *host;  char *user;  char *password;  char *socket;  uint16_t port;  int32_t retrytime;  int32_t tries;  if (!PyArg_ParseTuple(args,#ifdef SUPPORTS_UNSIGNED		"sHsssii",#else		"shsssii",#endif		&host, &port, &socket, &user, &password, &retrytime, &tries))    return NULL;  sqlrcon = new sqlrconnection(host, port, socket, user, password,							retrytime, tries);  sqlrcon->copyReferences();  return Py_BuildValue("l", (long)sqlrcon);}static PyObject *sqlrcon_free(PyObject *self, PyObject *args) {  long sqlrcon;  if (!PyArg_ParseTuple(args, "l", &sqlrcon))    return NULL;  Py_BEGIN_ALLOW_THREADS  delete ((sqlrconnection *)sqlrcon);  Py_END_ALLOW_THREADS  return Py_BuildValue("h", 0);}static PyObject *endSession(PyObject *self, PyObject *args) {  long sqlrcon;  if (!PyArg_ParseTuple(args, "l", &sqlrcon))    return NULL;  Py_BEGIN_ALLOW_THREADS  ((sqlrconnection *)sqlrcon)->endSession();  Py_END_ALLOW_THREADS  return Py_BuildValue("h", 0);}static PyObject *suspendSession(PyObject *self, PyObject *args) {  long sqlrcon;  bool rc;  if (!PyArg_ParseTuple(args, "l", &sqlrcon))    return NULL;  Py_BEGIN_ALLOW_THREADS  rc=((sqlrconnection *)sqlrcon)->suspendSession();  Py_END_ALLOW_THREADS  return Py_BuildValue("h", (short)rc);}static PyObject *getConnectionPort(PyObject *self, PyObject *args) {  long sqlrcon;  bool rc;  if (!PyArg_ParseTuple(args, "l", &sqlrcon))    return NULL;  rc=((sqlrconnection *)sqlrcon)->getConnectionPort();  return Py_BuildValue("h", (short)rc);}static PyObject *getConnectionSocket(PyObject *self, PyObject *args) {  long sqlrcon;  const char *rc;  if (!PyArg_ParseTuple(args, "l", &sqlrcon))    return NULL;  rc=((sqlrconnection *)sqlrcon)->getConnectionSocket();  return Py_BuildValue("s", rc);}static PyObject *resumeSession(PyObject *self, PyObject *args) {  long sqlrcon;  uint16_t port;  char *socket;  bool rc;  if (!PyArg_ParseTuple(args,#ifdef SUPPORTS_UNSIGNED	"lHs",#else	"lhs",#endif	&sqlrcon, &port, &socket))    return NULL;  Py_BEGIN_ALLOW_THREADS  rc=((sqlrconnection *)sqlrcon)->resumeSession(port,socket);  Py_END_ALLOW_THREADS  return Py_BuildValue("h", (short)rc);}static PyObject *ping(PyObject *self, PyObject *args) {  long sqlrcon;  bool rc;  if (!PyArg_ParseTuple(args, "l", &sqlrcon))    return NULL;  Py_BEGIN_ALLOW_THREADS  rc=((sqlrconnection *)sqlrcon)->ping();  Py_END_ALLOW_THREADS  return Py_BuildValue("h", (short)rc);}static PyObject *identify(PyObject *self, PyObject *args) {  long sqlrcon;  const char *rc;  if (!PyArg_ParseTuple(args, "l", &sqlrcon))    return NULL;  Py_BEGIN_ALLOW_THREADS  rc=((sqlrconnection *)sqlrcon)->identify();  Py_END_ALLOW_THREADS  return Py_BuildValue("s", rc);}static PyObject *dbVersion(PyObject *self, PyObject *args) {  long sqlrcon;  const char *rc;  if (!PyArg_ParseTuple(args, "l", &sqlrcon))    return NULL;  Py_BEGIN_ALLOW_THREADS  rc=((sqlrconnection *)sqlrcon)->dbVersion();  Py_END_ALLOW_THREADS  return Py_BuildValue("s", rc);}static PyObject *bindFormat(PyObject *self, PyObject *args) {  long sqlrcon;  const char *rc;  if (!PyArg_ParseTuple(args, "l", &sqlrcon))    return NULL;  Py_BEGIN_ALLOW_THREADS  rc=((sqlrconnection *)sqlrcon)->bindFormat();  Py_END_ALLOW_THREADS  return Py_BuildValue("s", rc);}static PyObject *autoCommitOn(PyObject *self, PyObject *args) {  long sqlrcon;  bool rc;  if (!PyArg_ParseTuple(args, "l", &sqlrcon))    return NULL;  Py_BEGIN_ALLOW_THREADS  rc=((sqlrconnection *)sqlrcon)->autoCommitOn();  Py_END_ALLOW_THREADS  return Py_BuildValue("h", (short)rc);}static PyObject *autoCommitOff(PyObject *self, PyObject *args) {  long sqlrcon;  bool rc;  if (!PyArg_ParseTuple(args, "l", &sqlrcon))    return NULL;  Py_BEGIN_ALLOW_THREADS  rc=((sqlrconnection *)sqlrcon)->autoCommitOff();  Py_END_ALLOW_THREADS  return Py_BuildValue("h", (short)rc);}static PyObject *commit(PyObject *self, PyObject *args) {  long sqlrcon;  bool rc;  if (!PyArg_ParseTuple(args, "l", &sqlrcon))    return NULL;  Py_BEGIN_ALLOW_THREADS  rc=((sqlrconnection *)sqlrcon)->commit();  Py_END_ALLOW_THREADS  return Py_BuildValue("h", (short)rc);}static PyObject *rollback(PyObject *self, PyObject *args) {  long sqlrcon;  bool rc;  if (!PyArg_ParseTuple(args, "l", &sqlrcon))    return NULL;  Py_BEGIN_ALLOW_THREADS  rc=((sqlrconnection *)sqlrcon)->rollback();  Py_END_ALLOW_THREADS  return Py_BuildValue("h", (short)rc);}static PyObject *debugOn(PyObject *self, PyObject *args) {  long sqlrcon;  if (!PyArg_ParseTuple(args, "l", &sqlrcon))    return NULL;  ((sqlrconnection *)sqlrcon)->debugOn();  return Py_BuildValue("h", 0);}static PyObject *debugOff(PyObject *self, PyObject *args) {  long sqlrcon;  if (!PyArg_ParseTuple(args, "l", &sqlrcon))    return NULL;  ((sqlrconnection *)sqlrcon)->debugOff();  return Py_BuildValue("h", 0);}static PyObject *getDebug(PyObject *self, PyObject *args) {  long sqlrcon;  if (!PyArg_ParseTuple(args, "l", &sqlrcon))    return NULL;  return Py_BuildValue("h", (short)((sqlrconnection *)sqlrcon)->getDebug());}static PyObject *sqlrcur_alloc(PyObject *self, PyObject *args) {  long	sqlrcon;  sqlrcursor *sqlrcur;  if (!PyArg_ParseTuple(args, "l", &sqlrcon))    return NULL;  sqlrcur = new sqlrcursor((sqlrconnection *)sqlrcon);  sqlrcur->copyReferences();  return Py_BuildValue("l", (long)sqlrcur);}static PyObject *sqlrcur_free(PyObject *self, PyObject *args) {  long sqlrcur;  if (!PyArg_ParseTuple(args, "l", &sqlrcur))    return NULL;  Py_BEGIN_ALLOW_THREADS  delete ((sqlrcursor *)sqlrcur);  Py_END_ALLOW_THREADS  return Py_BuildValue("h", 0);}static PyObject *setResultSetBufferSize(PyObject *self, PyObject *args) {  long sqlrcur;  uint64_t rows;  if (!PyArg_ParseTuple(args,#ifdef SUPPORTS_UNSIGNED	"lK",#else	"lL",#endif	&sqlrcur, &rows))    return NULL;  ((sqlrcursor *)sqlrcur)->setResultSetBufferSize(rows);  return Py_BuildValue("h", 0);}static PyObject *getResultSetBufferSize(PyObject *self, PyObject *args) {  long sqlrcur;  uint64_t rc;  if (!PyArg_ParseTuple(args, "l", &sqlrcur))    return NULL;  rc=((sqlrcursor *)sqlrcur)->getResultSetBufferSize();  // FIXME: lame, python doesn't support building values from uint64_t's  return Py_BuildValue("l", (long)rc);}static PyObject *dontGetColumnInfo(PyObject *self, PyObject *args) {  long sqlrcur;  if (!PyArg_ParseTuple(args, "l", &sqlrcur))    return NULL;  ((sqlrcursor *)sqlrcur)->dontGetColumnInfo();  return Py_BuildValue("h", 0);}static PyObject *getColumnInfo(PyObject *self, PyObject *args) {  long sqlrcur;  if (!PyArg_ParseTuple(args, "l", &sqlrcur))    return NULL;  ((sqlrcursor *)sqlrcur)->getColumnInfo();  return Py_BuildValue("h", 0);}static PyObject *mixedCaseColumnNames(PyObject *self, PyObject *args) {  long sqlrcur;  if (!PyArg_ParseTuple(args, "l", &sqlrcur))    return NULL;  ((sqlrcursor *)sqlrcur)->mixedCaseColumnNames();  return Py_BuildValue("h", 0);}static PyObject *upperCaseColumnNames(PyObject *self, PyObject *args) {  long sqlrcur;  if (!PyArg_ParseTuple(args, "l", &sqlrcur))    return NULL;  ((sqlrcursor *)sqlrcur)->upperCaseColumnNames();  return Py_BuildValue("h", 0);}static PyObject *lowerCaseColumnNames(PyObject *self, PyObject *args) {  long sqlrcur;  if (!PyArg_ParseTuple(args, "l", &sqlrcur))    return NULL;  ((sqlrcursor *)sqlrcur)->lowerCaseColumnNames();  return Py_BuildValue("h", 0);}static PyObject *cacheToFile(PyObject *self, PyObject *args) {  long sqlrcur;  char *filename;  if (!PyArg_ParseTuple(args, "ls", &sqlrcur, &filename))    return NULL;  ((sqlrcursor *)sqlrcur)->cacheToFile(filename);  return Py_BuildValue("h", 0);}static PyObject *setCacheTtl(PyObject *self, PyObject *args) {  long sqlrcur;  uint32_t ttl;  if (!PyArg_ParseTuple(args,#ifdef SUPPORTS_UNSIGNED	"lI",#else	"li",#endif	&sqlrcur, &ttl))    return NULL;  ((sqlrcursor *)sqlrcur)->setCacheTtl(ttl);  return Py_BuildValue("h", 0);}static PyObject *getCacheFileName(PyObject *self, PyObject *args) {  long sqlrcur;  const char *rc;  if (!PyArg_ParseTuple(args, "l", &sqlrcur))    return NULL;  rc=((sqlrcursor *)sqlrcur)->getCacheFileName();  return Py_BuildValue("s", rc);}static PyObject *cacheOff(PyObject *self, PyObject *args) {  long sqlrcur;  if (!PyArg_ParseTuple(args, "l", &sqlrcur))    return NULL;  ((sqlrcursor *)sqlrcur)->cacheOff();  return Py_BuildValue("h", 0);}static PyObject *sendQuery(PyObject *self, PyObject *args) {  char *sqlString;  long sqlrcur;  bool rc;  if (!PyArg_ParseTuple(args, "ls", &sqlrcur, &sqlString))    return NULL;  Py_BEGIN_ALLOW_THREADS  rc=((sqlrcursor *)sqlrcur)->sendQuery(sqlString);  Py_END_ALLOW_THREADS  return Py_BuildValue("h", (short)rc);}static PyObject *sendQueryWithLength(PyObject *self, PyObject *args) {  char *sqlString;  long sqlrcur;  uint32_t length;  bool rc;  if (!PyArg_ParseTuple(args,#ifdef SUPPORTS_UNSIGNED	"lsI",#else	"lsi",#endif	&sqlrcur, &sqlString, &length))    return NULL;  Py_BEGIN_ALLOW_THREADS  rc=((sqlrcursor *)sqlrcur)->sendQuery(sqlString,length);  Py_END_ALLOW_THREADS  return Py_BuildValue("h", (short)rc);}static PyObject *sendFileQuery(PyObject *self, PyObject *args) {  char *path;  char *file;  long sqlrcur;  bool rc;  if (!PyArg_ParseTuple(args, "lss", &sqlrcur, &path, &file))    return NULL;  Py_BEGIN_ALLOW_THREADS  rc=((sqlrcursor *)sqlrcur)->sendFileQuery(path, file);  Py_END_ALLOW_THREADS  return Py_BuildValue("h", (short)rc);}static PyObject *prepareQuery(PyObject *self, PyObject *args) {  long sqlrcur;  char *sqlString;  if (!PyArg_ParseTuple(args, "ls", &sqlrcur, &sqlString))    return NULL;  ((sqlrcursor *)sqlrcur)->prepareQuery(sqlString);  return Py_BuildValue("h", 0);}static PyObject *prepareQueryWithLength(PyObject *self, PyObject *args) {  char *sqlString;  long sqlrcur;  uint32_t length;  if (!PyArg_ParseTuple(args,#ifdef SUPPORTS_UNSIGNED	"lsI",

⌨️ 快捷键说明

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