怎样给Python的MySQL模块加功能
发表于:2025-11-11 作者:千家信息网编辑
千家信息网最后更新 2025年11月11日,小编给大家分享一下怎样给Python的MySQL模块加功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!使用Python操
千家信息网最后更新 2025年11月11日怎样给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安全错误
数据库的锁怎样保障安全
表格筛选恢复数据库
pfmea数据库建立
中国澳门企业oa服务器云主机
年度公司网络安全信息自查
中国网络安全法下载
普联摄像头服务器地址是哪里
江西省网络安全总队总工
软件开发测试期占比
上海聚群软件开发有限公司
unctad贸易数据库
做一个网络安全的手抄报
低代码软件开发工具
如何使用云电脑安装服务器
淘宝 网络安全法 绑定手机
广州细刻网络技术有限公司笔试
网络安全 公益广告
楼宇软件开发是什么意思
宁波香港云服务器找哪家
网络安全的具体应用 论文
香肠派对连接不上服务器怎么回事
小米输入法清楚数据库
wps数据库动态更新
网络安全专家专山
连云港工程软件开发特点
数据库客户端编程
计算机网络安全与维护
网络安全传统对联
中央纪委网络技术中
软件开发过程评估记录
微看电视软件开发