怎样给Python的MySQL模块加功能
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,小编给大家分享一下怎样给Python的MySQL模块加功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!使用Python操
千家信息网最后更新 2026年11月01日怎样给Python的MySQL模块加功能
小编给大家分享一下怎样给Python的MySQL模块加功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
使用Python操作MySQL数据库的时候常使用MySQLdb这个模块。在开发的过程发现MySQLdb.connect有些参数没法设置。通过这个页面我们看到的是在connect的时候,可以设置的option和client_flags和MySQLcapi相比差不少。下面小编来讲解下如何给Python的MySQL模块加功能?
如何给Python的MySQL模块加功能
一个很重要的参数MYSQL_OPT_READ_TIMEOUT没法设置,这个参数如果不设置,极致状况MySQL处于hang住,自动切换IP漂移,客户端无法重连到新MySQL。
给MySQLdb加Option很简单,只要修改_mysql.c这个把Python对象映射到MySQL操作的文件,添加参数,再加一段mysql_option即可。
下面是修改后的gitdiff文件
diff--gita/_mysql.cb/_mysql.cindexd42cc54..61a9b34100644---a/_mysql.c+++b/_mysql.c@@-489,9+489,10@@_mysql_ConnectionObject_Initialize("named_pipe","init_command","read_default_file","read_default_group","client_flag","ssl",-"local_infile",+"local_infile","read_timeout",NULL};intconnect_timeout=0;+intread_timeout=0;intcompress=-1,named_pipe=-1,local_infile=-1;char*init_command=NULL,*read_default_file=NULL,@@-500,7+501,7@@_mysql_ConnectionObject_Initialize(self->converter=NULL;self->open=0;check_server_init(-1);-if(!PyArg_ParseTupleAndKeywords(args,kwargs,"|ssssisOiiisssiOi:connect",+if(!PyArg_ParseTupleAndKeywords(args,kwargs,"|ssssisOiiisssiOii:connect",kwlist,&host,&user,&passwd,&db,&port,&unix_socket,&conv,@@-509,7+510,8@@_mysql_ConnectionObject_Initialize(&init_command,&read_default_file,&read_default_group,&client_flag,&ssl,-&local_infile/*DONOTPATCHFORRECONNECT,IDIOTS+&local_infile,&read_timeout+/*DONOTPATCHFORRECONNECT,IDIOTSIFYOUDOTHIS,IWILLNOTSUPPORTYOURPACKAGES.*/))return-1;@@-540,6+542,12@@_mysql_ConnectionObject_Initialize(mysql_options(&(self->connection),MYSQL_OPT_CONNECT_TIMEOUT,(char*)&timeout);}++if(read_timeout){+unsignedinttimeout=read_timeout;+mysql_options(&(self->connection),MYSQL_OPT_READ_TIMEOUT,(char*)&timeout);+}+if(compress!=-1){mysql_options(&(self->connection),MYSQL_OPT_COMPRESS,0);client_flag|=CLIENT_COMPRESS;代码修改完毕,pythonsetup.pyinstall即可,如果出现mysql_config找不到的问题。你还要修改setup_posix.py文件。
hoterran@hoterran-laptop:~/Projects/MySQL-python-1.2.3$gitdiffsetup_posix.pydiff--gita/setup_posix.pyb/setup_posix.pyindex86432f5..f4f08f1100644---a/setup_posix.py+++b/setup_posix.py@@-23,7+23,7@@defmysql_config(what):ifret/256>1:raiseEnvironmentError("%snotfound"%(mysql_config.path,))returndata-mysql_config.path="mysql_config"+mysql_config.path="/usr/local/mysql/bin/mysql_config"defget_config():importos,sys如何给Python的MySQL模块加功能
编译通过,我们来试试添加的read_timeout这个参数。
conn=MySQLdb.connect(host=DB_SERVER,user=DB_USERNAME,passwd=DB_PASSWORD,db=DB_NAME,port=int(DB_PORT),client_flag=2,read_timeout=10)
然后执行语句前,你试着把mysql用gdbhang住10s后,python就会异常抛错
OperationalError:(2013,'LostconnectiontoMySQLserverduringquery')>/home/hoterran/Projects/dbaas/trunk/dbtest.py(18)()>mydb.execute_sql(conn,sql)(Pdb)--Return-->/home/hoterran/Projects/dbaas/trunk/dbtest.py(18)()->None>mydb.execute_sql(conn,sql)(Pdb)OperationalError:(2013,'LostconnectiontoMySQLserverduringquery')>(1)()->None
以上是"怎样给Python的MySQL模块加功能"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
模块
功能
参数
文件
篇文章
内容
时候
重要
不怎么
代码
大部分
客户
客户端
对象
数据
数据库
是在
更多
极致
状况
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技企业
中关村互联网科技集团
新华互联网科技学院
互联网医疗科技
中国 科技 互联网
深圳互联网络科技有限公司
互联网未来科技
新浪科技互联网
国外互联网科技网站
青海省互联网新科技
青岛中康互联网医疗科技有限公司
成都铂石互联网科技做什么的
科技互联网大厂
苏州铭阳互联网科技有限公司
广东工业互联网大赛深圳学泰科技
中天科技中国工业互联网
上海互联网科技公司ppt
米泉互联网科技专业怎么样
10位科技互联网大佬
华人运通互联网科技公司
互联网科技名片
科技互联网龙头
互联网金融 金融科技
西安互联网科技
互联网科技公司有哪些
哈尔滨新华互联网科技学院
北京大学互联网科技怎么样
互联网金融科技展
科技互联网的核心竞争力
承德科技产业互联网平台