久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

怎樣給Python的MySQL模塊加功能

178次閱讀
沒有評論

共計 2914 個字符,預計需要花費 8 分鐘才能閱讀完成。

自動寫代碼機器人,免費開通

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

使用 Python 操作 MySQL 數據庫的時候常使用 MySQLdb 這個模塊。在開發的過程發現 MySQLdb.connect 有些參數沒法設置。通過這個頁面我們看到的是在 connect 的時候,可以設置的 option 和 client_flags 和 MySQLcapi 相比差不少。下面丸趣 TV 丸趣 TV 小編來講解下如何給 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 模塊加功能”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注丸趣 TV 行業資訊頻道!

向 AI 問一下細節

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-12-04發表,共計2914字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 瑞安市| 柏乡县| 宜宾市| 班戈县| 罗定市| 德昌县| 漾濞| 延寿县| 阿合奇县| 合阳县| 鄄城县| 屯门区| 宜城市| 朝阳县| 堆龙德庆县| 华池县| 新建县| 罗甸县| 南和县| 凤凰县| 曲麻莱县| 工布江达县| 瑞昌市| 南部县| 肇源县| 青州市| 大荔县| 东方市| 大埔区| 甘谷县| 深州市| 邯郸县| 兴安盟| 虎林市| 清原| 红河县| 黄石市| 朝阳县| 普定县| 中牟县| 尚义县|