真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

怎樣給Python的MySQL模塊加功能

小編給大家分享一下怎樣給Python的MySQL模塊加功能,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

成都做網(wǎng)站、網(wǎng)站制作中從網(wǎng)站色彩、結(jié)構(gòu)布局、欄目設(shè)置、關(guān)鍵詞群組等細(xì)微處著手,突出企業(yè)的產(chǎn)品/服務(wù)/品牌,幫助企業(yè)鎖定精準(zhǔn)用戶,提高在線咨詢和轉(zhuǎn)化,使成都網(wǎng)站營銷成為有效果、有回報的無錫營銷推廣。成都創(chuàng)新互聯(lián)專業(yè)成都網(wǎng)站建設(shè)10多年了,客戶滿意度97.8%,歡迎成都創(chuàng)新互聯(lián)客戶聯(lián)系。

使用Python操作MySQL數(shù)據(jù)庫的時候常使用MySQLdb這個模塊。在開發(fā)的過程發(fā)現(xiàn)MySQLdb.connect有些參數(shù)沒法設(shè)置。通過這個頁面我們看到的是在connect的時候,可以設(shè)置的option和client_flags和MySQLcapi相比差不少。下面創(chuàng)新互聯(lián)小編來講解下如何給Python的MySQL模塊加功能?

如何給Python的MySQL模塊加功能

一個很重要的參數(shù)MYSQL_OPT_READ_TIMEOUT沒法設(shè)置,這個參數(shù)如果不設(shè)置,極致狀況MySQL處于hang住,自動切換IP漂移,客戶端無法重連到新MySQL。

給MySQLdb加Option很簡單,只要修改_mysql.c這個把Python對象映射到MySQL操作的文件,添加參數(shù),再加一段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即可,如果出現(xiàn)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這個參數(shù)。

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)

然后執(zhí)行語句前,你試著把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模塊加功能”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


當(dāng)前標(biāo)題:怎樣給Python的MySQL模塊加功能
URL鏈接:http://weahome.cn/article/jpdhhs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部