測試:
1、將資料庫配置成主從賦值,mycat實現讀寫分離;
2、使用python對資料庫進行操作;
3、主從資料庫都開啟general_log,檢視資料庫查詢日誌。
實驗結果:
使用mysqldb和pymysql庫,不管什麼操作,mycat都將操作路由到了主庫來執行。
原因:使用python第三方庫,mysqldb和pymysql都會預設開啟事務來執行sql語句。也就是常用的執行方法,如下:
cursor.execute(sql_1)
cursor.execute(sql_2)
#至此sql還沒有到資料庫中執行
cursor.commit()
#commit後所有sql才會生效
也就是說,操作中包含了一種事務處理的機制。但是,mycat對於顯式事務來說,只會路由到主庫上執行,所以就會造成,python操作mycat的時候,mycat總是將操作路由到主庫。
解決辦法:
mysql方面開啟:autocommit。
查詢方式以及設定如下:
select @@autocommit;
set @@autocommit=1;
或者修改配置檔案:
1. [mysqld]
2. init_connect='set autocommit=0'
一下提供三種第三方庫運算元據庫的處理方式:
mysqldb
#在連線資料庫後
conn.autocommit(1)
#並且在執行完execute之後,不用進行commit操作。
pymysql
conn = pymysql.connect(host='192.168.1.2', user='root', password='1',
db='test', port=8066, charset='utf8',autocommit=true)
#並且在執行完execute之後,不用進行commit操作。
sqlalchemy
#連線的時候
mysql+pymysql://user:password@host:port/db?charset=foo&autocommit=true
以上操作,建議只對select操作進行。
pythontxt操作 python文字操作問題
小弟新手請高手們幫忙看一下我的程式的問題。我要實現將乙個文字中的內容稍作轉換寫入到另乙個文字。原文本 a123,b1234,c456789,d987456,a321,b426,c456489,d123456,後面還有好多.小弟新手請高手們幫忙看一下我的程式的問題。我要實現將乙個文字中的內容稍作轉換寫...
python的基礎操作 Python基礎操作彙總
變數命名 變數名只能是字母 數字或下劃線的任務組合 變數名的第乙個字元不能是數字 不能使用一些預留的關鍵字,如and,as assert,break,etc.官方推薦明明方式 name of bf python 沒有常量的說法,推薦到全大寫表示常量 字元發展史 ascii gb2312 gbk1.0...
python的操作步驟 python基本操作
一 python介紹 1 什麼是python python 是乙個高層次的結合了解釋性 編譯性 互動性和面向 物件的指令碼語言。2 什麼是物件導向 這意味著python支援物件導向的風格或 封裝在 物件的程式設計技術。3 什麼是解釋型別 這意味著開發過程中沒有了編譯這個環節。4 什麼是動態型別 5 ...