日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python操作mycat只操作主库【解决办法】

發布時間:2024/4/17 python 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python操作mycat只操作主库【解决办法】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

python操作mycat只操作主庫

測試:

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;或者修改配置文件: 復制代碼
  • [mysqld]

  • 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操作進行。

    總結

    以上是生活随笔為你收集整理的python操作mycat只操作主库【解决办法】的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。