亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? mysql.c

?? This a Python 3 module that adds support for a MySQL database, written entirely in C. It s purpose i
?? C
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
/*  Copyright (C) 2008, 2009 Bozhin Zafirov  This program is free software: you can redistribute it and/or modify  it under the terms of the GNU General Public License as published by  the Free Software Foundation, either version 3 of the License, or  (at your option) any later version.  This program is distributed in the hope that it will be useful,  but WITHOUT ANY WARRANTY; without even the implied warranty of  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License for more details.  You should have received a copy of the GNU General Public License  along with this program.  If not, see <http://www.gnu.org/licenses/>.*/#include <Python.h>#include <structmember.h>/* includes */#include <mysql/mysql.h>#define refprint(x)	printf("rc: %d\n", (int)((PyObject *)(x)->ob_refcnt))/* types */typedef enum {false=0, true=1} bool;#define RETURN_PYNONE                                                           \	Py_INCREF(Py_None);                                                     \	return (Py_None);#define RETURN_PYTRUE                                                           \	Py_INCREF(Py_True);                                                     \	return (Py_True);#define RETURN_PYFALSE                                                          \	Py_INCREF(Py_False);                                                    \	return (Py_False);#define raise_error(s)								\	PyErr_SetString(MySQLError, s);						\	return NULL;								\#define RETURN_BOOL(x)								\	if (x)									\	{									\		RETURN_PYFALSE							\	} else {								\		RETURN_PYTRUE							\	}#define _m_member(name, type, offset, flags, docstr)				\	{name, type, offsetof(MySQLconn, offset), flags, docstr}/* function definitions */#define _r_header(name)								\static PyObject *name(MySQLres *r, PyObject *args, PyObject *kwds)#define _r_header_noargs(name)							\static PyObject *name(MySQLres *r, PyObject *unused)/* result function definition */#define _r_func(name, body)							\_r_header(name)									\{										\	body									\}#define _m_header(name)								\static PyObject *name(MySQLconn *m, PyObject *args, PyObject *kwds)#define _m_header_noargs(name)							\static PyObject *name(MySQLconn *m, PyObject *unused)#define _m_func(name, body)							\_m_header(name)									\{										\	body									\}#define _m_funcbool(name, cond)							\_m_func(name, RETURN_BOOL(cond))#define _m_funcboolparam(name, ptype, pname, type, cond)			\_m_func(name,									\	ptype pname;								\	if (!PyArg_ParseTuple(args, type, &pname)) return NULL;			\	RETURN_BOOL(cond)							\)/* forward declarations */static PyTypeObject MySQLResObjectType;static PyTypeObject MySQLIterObjectType;/* error object */static PyObject *MySQLError;/* object type definition */typedef struct {	PyObject_HEAD	/* MySQL properties */	MYSQL		*mysql;	/* use dictionary results */	bool		use_dict;	/* informational properties */	char *host;	long port;	char *user;	char *pass;	char *name;	/* other properties */	/* Returns a string that represents the client library version */	char *_client_info;	/* Returns an integer that represents the client library version. */	char *_client_version;	/* Returns a string that represents the server version number. */	char *_server_info;	/* Returns the version number of the server as an integer. */	int  _server_version;	/* Returns a string describing the type of connection in use, including the server hostname. */	char *_host_info;	/* Returns the protocol version used by current connection. */	int  _proto_info;	/* Return default character set name for the current connection */	char *_character_set_name;	/* Returns the SSL cipher used for the given connection to the server */	char *_ssl_cipher;		/* Returns the error code for the most recently invoked API function that can succeed or fail */	int  _errno;	/* Returns a string containing the error message for the most recently invoked API function that failed */	char *_error;	/* get number of rows fetched by last select query */	long _affected_rows;	/* Returns the value generated for an AUTO_INCREMENT column by the previous INSERT or UPDATE statement */	long _insert_id;	/* Returns a null-terminated string containing the SQLSTATE error code for the most recently executed SQL statement. */	char *_sqlstate;	/* Retrieves a string providing information about the most recently executed statement, but only for the statements listed here. */	char *_info;} MySQLconn;/* result object definition */typedef struct {	PyObject_HEAD	/* result properties */	MYSQL		*mysql;	PyObject	*fields;	PyObject	*data;	/* other properties */	int		field_count;	int		num_fields;	int		num_rows;	/* name of result object */	PyObject	*query;} MySQLres;/* result iterator object definition */typedef struct {	PyObject_HEAD	Py_ssize_t		index;	MySQLres		*r;} MySQLresIter;/* mysql table map */typedef struct {	PyObject_HEAD	} MySQLmap;/* ***************************** METHODS ***************************** *//* class constructor */static PyObject *m_new(PyTypeObject *type, PyObject *args, PyObject *kwds){	/* object variable */	MySQLconn *m = (MySQLconn *)type->tp_alloc(type, 0);	if (m == NULL) return NULL;	/* parse arguments */	static char *kwlist[] = {"username", "password", "database", "hostname", "port", NULL};	if (!PyArg_ParseTupleAndKeywords(args, kwds, "sss|sdO", kwlist, &m->user, &m->pass, &m->name, &m->host, &m->port)) return NULL;	/* allocate memory */	m->mysql = mysql_init(NULL);	/* connect to MySQL server */	if (mysql_real_connect(m->mysql, m->host, m->user, m->pass, m->name, m->port, NULL, 0) == NULL)	{		Py_DECREF(m);		raise_error(mysql_error(m->mysql))	}	/* set up other properties */	m->_client_info		= (char *)mysql_get_client_info();	m->_client_version	= (char *)mysql_get_client_version();	m->_server_info		= (char *)mysql_get_server_info(m->mysql);	m->_server_version	= mysql_get_server_version(m->mysql);	m->_host_info		= (char *)mysql_get_host_info(m->mysql);	m->_proto_info		= mysql_get_proto_info(m->mysql);	m->_character_set_name	= (char *)mysql_character_set_name(m->mysql);	m->_ssl_cipher		= (char *)mysql_get_ssl_cipher(m->mysql);	m->use_dict		= false;	/* return new object */	return (PyObject *)m;}/* class destructor */static void m_dealloc(MySQLconn *m){	mysql_close(m->mysql);	Py_TYPE(m)->tp_free((PyObject *)m);}/* mysql object representation */static PyObject *m_repr(MySQLconn *m){	char *host = m->host;	if (host == NULL) host = "localhost";	return PyUnicode_FromFormat("<MySQL :: %s>", host);}/* Sets autocommit mode on if mode is 1, off if mode is 0 */PyDoc_STRVAR(_mdoc_autocommit,"autocommit(mode) -> set autocommit mode on or off\n\\n\If mode is True, turn autocommit mode on. Otherwise turn it off.\n\Returns status of autocommit mode.");_m_funcboolparam(m_autocommit, int, mode, "i", mysql_autocommit(m->mysql, mode))/* Change user and current database */PyDoc_STRVAR(_mdoc_change_user,"change_user(username, password, dbname) -> change current user and database\n\\n\Changes the user and causes the database specified by dbname to become the default (current) database.\n\In subsequent queries, the database is the default for table references that do not include explicit\n\database specifier.\n\Returns True on success or False on fail.");_m_header(m_change_user){	const char *user, *pass, *name;	/* parse arguments */	if (!PyArg_ParseTuple(args, "sss", &user, &pass, &name)) return NULL;	RETURN_BOOL(mysql_change_user(m->mysql, user, pass, name))}/* Commits the current transaction */PyDoc_STRVAR(_mdoc_commit,"commit() -> commits the current transaction\n\\n\Returns True on success or False on fail.");_m_funcbool(m_commit, mysql_commit(m->mysql))/* Creates the database named by given parameter */PyDoc_STRVAR(_mdoc_create_db,"create_db(dbname) -> creates the database specified by dbname\n\\n\Returns True on success or False on fail.");_m_header(m_create_db){	PyObject *query;	const char *q;	/* parse arguments */	if (!PyArg_ParseTuple(args, "s", &q)) return NULL;	query = PyBytes_FromFormat("create database %s;", q);	int r = mysql_real_query(m->mysql, PyBytes_AsString(query), Py_SIZE(query));	Py_DECREF(query);	RETURN_BOOL(r);}/* Drops the database named by the given parameter */PyDoc_STRVAR(_mdoc_drop_db,"drop_db(dbname) -> drops the database specified by dbname\n\\n\Returns True on success or False on fail.");_m_header(m_drop_db){	PyObject *query;	const char *q;	/* parse arguments */	if (!PyArg_ParseTuple(args, "s", &q)) return NULL;	query = PyBytes_FromFormat("drop database %s;", q);	int r = mysql_real_query(m->mysql, PyBytes_AsString(query), Py_SIZE(query));	Py_DECREF(query);	RETURN_BOOL(r);}/* This function is used to create a legal SQL string that you can use in an SQL statement */PyDoc_STRVAR(_mdoc_escape_string,"escape_string(str) -> escape SQL specific characters\n\\n\This function is used to create a legal SQL string that you can use in an SQL statement.\n\The string str is encoded to an escaped SQL string taking into account the current character set.");_m_header(m_escape_string){	PyObject *result;	const char *from;	int len;	char *to;	/* parse arguments */	if (!PyArg_ParseTuple(args, "s#", &from, &len)) return NULL;	to = (char *)malloc(len*2+1);	mysql_real_escape_string(m->mysql, to, from, len);	result = Py_BuildValue("s", to);	free(to);	return result;}/* This function is used to create a legal SQL string that you can use in an SQL statement. */PyDoc_STRVAR(_mdoc_hex_string,"hex_string(str) -> \n\\n\This function is used to create a legal SQL string that you can use in an SQL statement.\n\The string in from is encoded to hexadecimal format, with each character encoded as two hexadecimal digits\n\and the result is returned.");_m_header(m_hex_string){	PyObject *result;	const char *from;	int len;	char *to;	/* parse arguments */	if (!PyArg_ParseTuple(args, "s#", &from, &len)) return NULL;	to = (char *)malloc(len*2+1);	mysql_hex_string(to, from, len);	result = PyUnicode_FromFormat("0x%s", to);	free(to);	return result;}/* Asks the server to kill the thread specified by pid */PyDoc_STRVAR(_mdoc_kill,"kill(pid) -> kill server thread specifeid by pid\n\\n\This function asks the server to kill the thread specified by pid.\n\Returns True on success or False on fail.");_m_funcboolparam(m_kill, int, pid, "i", mysql_kill(m->mysql, pid))/* Returns a result set consisting of database names on the server that match the simple regular expression specified by the wild parameter */PyDoc_STRVAR(_mdoc_list_dbs,"list_dbs(wild) -> list databases\n\\n\Returns a result set consisting of database names on the server that match the simple regular expression\n\specified by the wild parameter. wild may contain the wildcard characters “%” or “_”, or may be omitted\n\to match all databases.");_m_header(m_list_dbs){	const char *wild = NULL;	MYSQL_RES *res;	/* parse arguments */	if (!PyArg_ParseTuple(args, "|s*", &wild)) return NULL;	res = mysql_list_dbs(m->mysql, wild);	if (res != NULL)	{		int i;		PyObject *result = PyTuple_New(mysql_num_rows(res));		MYSQL_ROW row;		/* prepare list of databases */		for (i=0; i<mysql_num_rows(res); i++)		{

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲人精品一区| 国产成a人无v码亚洲福利| 69成人精品免费视频| 国产综合久久久久影院| 亚洲自拍偷拍综合| 日本一区二区视频在线| 91精品国产色综合久久不卡电影| 不卡视频在线观看| 久99久精品视频免费观看| 一区二区三区久久| 国产丝袜欧美中文另类| 精品99一区二区| 国产免费成人在线视频| 欧美无乱码久久久免费午夜一区| 国产精品综合一区二区| 午夜久久电影网| 国产精品欧美久久久久无广告| 91精品国产一区二区三区| bt欧美亚洲午夜电影天堂| 国产在线观看免费一区| 免费观看日韩电影| 亚洲成年人影院| 伊人婷婷欧美激情| 中文字幕中文字幕在线一区 | 精品一区二区三区在线播放| 亚洲欧美电影一区二区| 国产精品国产精品国产专区不片| 日韩一区二区精品在线观看| 欧美日韩国产一级片| 91免费观看在线| 99re8在线精品视频免费播放| 国产夫妻精品视频| 国产精品夜夜嗨| 欧美电影精品一区二区| 欧美色窝79yyyycom| 色综合视频一区二区三区高清| 国产在线播放一区二区三区| 久久99久久久久久久久久久| 日韩精品1区2区3区| 亚洲成人动漫一区| 亚洲成精国产精品女| 亚洲国产视频一区二区| 亚洲二区在线观看| 亚洲v精品v日韩v欧美v专区| 亚洲小少妇裸体bbw| 亚洲国产精品久久久久婷婷884 | 国产一区二区三区黄视频 | 欧美成人video| 欧美成人在线直播| 亚洲精品在线观看网站| 亚洲精品一区在线观看| 国产亚洲女人久久久久毛片| 国产午夜精品一区二区| 欧美韩国日本不卡| 国产精品福利影院| 中文字幕亚洲成人| 亚洲一区二区av电影| 首页综合国产亚洲丝袜| 美女国产一区二区| 欧美视频一区二区三区在线观看| 欧美日韩亚洲另类| 日韩一级在线观看| 久久久久久久久一| 国产精品久久久久久久久动漫| 亚洲欧美一区二区三区极速播放| 亚洲一区二区三区四区不卡| 亚洲成人精品影院| 欧洲人成人精品| 91亚洲国产成人精品一区二三 | 久久成人久久鬼色| 成人小视频免费在线观看| 色综合欧美在线视频区| 欧美一级欧美三级在线观看| 久久精品夜色噜噜亚洲aⅴ| 亚洲日本在线观看| 青青草视频一区| 不卡的电影网站| 9191久久久久久久久久久| 国产夜色精品一区二区av| 有码一区二区三区| 久久国产综合精品| 91视频观看视频| 欧美一区中文字幕| 欧美国产一区二区在线观看| 亚洲影院在线观看| 国产麻豆成人传媒免费观看| 色先锋久久av资源部| 亚洲精品一区二区三区在线观看 | 日韩三级视频在线观看| 国产精品毛片大码女人| 日韩电影在线看| av电影在线观看完整版一区二区| 欧美老年两性高潮| 国产精品日韩成人| 日本一不卡视频| 97成人超碰视| 久久亚洲一级片| 亚洲高清免费观看高清完整版在线观看| 美腿丝袜在线亚洲一区| 在线中文字幕一区| 国产日韩精品一区二区三区在线| 香蕉加勒比综合久久| 成人丝袜视频网| 欧美不卡视频一区| 亚洲va欧美va人人爽| 成人福利在线看| 2021久久国产精品不只是精品| 亚洲综合免费观看高清在线观看| 国产电影一区二区三区| 欧美一区三区二区| 亚洲愉拍自拍另类高清精品| proumb性欧美在线观看| 久久色在线观看| 老司机免费视频一区二区| 欧美视频一区在线观看| 亚洲人妖av一区二区| 国产大陆精品国产| 精品91自产拍在线观看一区| 日本不卡一区二区| 91精彩视频在线| 亚洲男人电影天堂| 成人国产精品免费观看动漫| 国产日韩欧美一区二区三区乱码 | 日韩高清一级片| 欧美无人高清视频在线观看| 成人欧美一区二区三区| 成人免费毛片片v| 欧美国产欧美亚州国产日韩mv天天看完整| 免费精品视频最新在线| 制服丝袜亚洲播放| 首页国产欧美久久| 欧美日韩精品福利| 亚洲电影中文字幕在线观看| 欧美性大战久久久久久久 | 丝袜美腿高跟呻吟高潮一区| 欧美日韩在线三级| 五月婷婷综合网| 欧美日韩精品欧美日韩精品一综合| 亚洲一卡二卡三卡四卡无卡久久| 在线亚洲+欧美+日本专区| 亚洲男人天堂av网| 欧美四级电影在线观看| 亚洲午夜三级在线| 欧美日韩情趣电影| 午夜视频一区二区三区| 这里只有精品电影| 久久精品噜噜噜成人88aⅴ| 精品少妇一区二区三区日产乱码 | 久久99精品久久久久久国产越南| 欧美一区二区三区四区视频| 九九热在线视频观看这里只有精品| 亚洲精品一区二区三区在线观看| 国产成人午夜精品5599| 国产精品久久精品日日| 在线亚洲一区二区| 日韩高清国产一区在线| 久久免费午夜影院| 成人高清av在线| 夜夜操天天操亚洲| 欧美一级黄色片| 国产成人精品亚洲777人妖| 亚洲四区在线观看| 欧美放荡的少妇| 久久99精品国产91久久来源| 国产校园另类小说区| 91麻豆国产精品久久| 三级不卡在线观看| 久久久99精品久久| 日本韩国一区二区三区| 青青草精品视频| 国产精品色眯眯| 欧美男女性生活在线直播观看| 精品在线一区二区三区| 亚洲三级电影全部在线观看高清| 欧美日韩成人综合天天影院| 国产一区二区电影| 一区二区三区精品久久久| 日韩精品一区二区三区中文不卡 | 在线成人免费观看| 国产成人精品免费一区二区| 一区二区三区不卡视频在线观看| 日韩欧美一级特黄在线播放| 成年人网站91| 麻豆精品精品国产自在97香蕉| 国产精品免费丝袜| 91精品国产欧美日韩| 99久久er热在这里只有精品66| 免费成人美女在线观看| 中文字幕一区免费在线观看| 日韩免费看网站| 色综合激情五月| 国产精品亚洲а∨天堂免在线| 亚洲综合自拍偷拍| 国产日韩欧美高清| 欧美精品视频www在线观看| av网站免费线看精品| 久久99国产精品免费网站| 一区二区不卡在线播放 | 国产日产欧美一区二区三区| 欧美日韩久久一区|