python操作mycat只操作主庫

2021-08-29 02:12:30 字數 1125 閱讀 1984

測試:

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 ...