整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          Python連接Mysql連接池

          Python連接Mysql連接池
          1. 用DBUtils
          ```
          # 安裝DBUtils包
          # pip install DBUtils
          from DBUtils.PooledDB import PooledDB
          
          pool=PooledDB(pymysql,5,host='0.0.0.0',user='root',passwd='123456',db='gps_base_data20171001-20171031',port=3306,charset="utf8") #5為連接池里的最少連接數
          
          def test(project_name):
          	try:
          		# 調用連接池
          		conn=pool.connection()
          		cur=conn.cursor()
          		sql="select * from student"
          		cur.execute(sql)
          			result=cur.fetchall()
          		    params=[]
          		    nowDate=dateUtil.datetime()
          		    for row in result:
          			    params.append((row[0], row[1], project_name, nowDate))
              except IOError:
                  conn.rollback() # 出現異常 回滾事件
                  print("Error: Function happen Error: test()")
              finally:
                  print("釋放資源,test,"+project_name)
                  cur.close()
                  conn.close()
          ```
          

          1. DBUtils介紹The DBUtils suite is realized as a Python package containing two subsets of modules, one for use with arbitrary DB-API 2 modules, the other one for use with the classic PyGreSQL module.

          The dependencies of the modules in the universal DB-API 2 variant are as indicated in the following diagram:
          [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-SHyEhjy2-1600348955087)(https://cito.github.io/w4py-olde-docs/Webware/DBUtils/Docs/dbdep.gif)]
          The dependencies of the modules in the classic PyGreSQL variant are similar:
          [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-pUaxT81b-1600348955088)(https://cito.github.io/w4py-olde-docs/Webware/DBUtils/Docs/pgdep.gif)]

          DBUtils是一套Python數據庫連接池包,并允許對非線程安全的數據庫接口進行線程安全包裝。DBUtils來自Webware for Python。

          DBUtils提供兩種外部接口:
          PersistentDB :提供線程專用的數據庫連接,并自動管理連接。
          PooledDB :提供線程間可共享的數據庫連接,并自動管理連接。
          實測證明 PersistentDB 的速度是最高的,但是在某些特殊情況下,數據庫的連接過程可能異常緩慢,而此時的PooledDB則可以提供相對來說平均連接時間比較短的管理方式。

          另外,實際使用的數據庫驅動也有所依賴,比如SQLite數據庫只能使用PersistentDB作連接池。

          功能
          SteadyDB.py用于穩定數據庫連接

          PooledDB.py連接池

          PersistentDB.py維持持續的數據庫連接(持續性連接)

          SimplePooledDB.py簡單連接池

          SimplePooledDB
          DBUtils.SimplePooledDB 是一個非常簡單的數據庫連接池實現。他比完善的 PooledDB 模塊缺少很多功能。 DBUtils.SimplePooledDB 本質上類似于 MiscUtils.DBPool 這個Webware的組成部分。你可以把它看作一種演示程序。

          SteadyDB

          DBUtils.SteadyDB 是一個模塊實現了”強硬”的數據庫連接,基于DB-API 2建立的原始連接。一個”強硬”的連接意味著在連接關閉之后,或者使用次數操作限制時會重新連接。

          一個典型的例子是數據庫重啟時,而你的程序仍然在運行并需要訪問數據庫,或者當你的程序連接了一個防火墻后面的遠程數據庫,而防火墻重啟時丟失了狀態時。

          一般來說你不需要直接使用 SteadyDB 它只是給接下來的兩個模塊提供基本服務, PersistentDB 和 PooledDB 。

          PersistentDB

          DBUtils.PersistentDB 實現了強硬的、線程安全的、頑固的數據庫連接,使用DB-API 2模塊。如下圖展示了使用 PersistentDB 時的連接層步驟:

          當一個線程首次打開一個數據庫連接時,一個連接會打開并僅供這個線程使用。當線程關閉連接時,連接仍然持續打開供這個線程下次請求時使用這個已經打開的連接。連接在線程死亡時自動關閉。

          簡單的來說 PersistentDB 嘗試重用數據庫連接來提高線程化程序的數據庫訪問性能,并且他確保連接不會被線程之間共享。

          因此, PersistentDB 可以在底層DB-API模塊并非線程安全的時候同樣工作的很好,并且他會在其他線程改變數據庫會話或者使用多語句事務時同樣避免問題的發生。

          PooledDB

          DBUtils.PooledDB 實現了一個強硬的、線程安全的、有緩存的、可復用的數據庫連接,使用任何DB-API 2模塊。如下圖展示了使用 PooledDB 時的工作流程:

          PooledDB 可以在不同線程之間共享打開的數據庫連接。這在你連接并指定 maxshared 參數,并且底層的DB-API 2接口是線程安全才可以,但是你仍然可以使用專用數據庫連接而不在線程之間共享連接。除了共享連接以外,還可以設立一個至少 mincached 的連接池,并且最多允許使用 maxcached 個連接,這可以同時用于專用和共享連接池。當一個線程關閉了一個非共享連接,則會返還到空閑連接池中等待下次使用。

          如果底層DB-API模塊是非線程安全的,線程鎖會確保使用 PooledDB 是線程安全的。所以你并不需要為此擔心,但是你在使用專用連接來改變數據庫會話或執行多命令事務時必須小心。
          該選擇哪一個?

          PersistentDB 和 PooledDB 都是為了重用數據庫連接來提高性能,并保持數據庫的穩定性。

          所以選擇何種模塊,可以參考上面的解釋。 PersistentDB 將會保持一定數量的連接供頻繁使用。在這種情況下你總是保持固定數量的連接。如果你的程序頻繁的啟動和關閉線程,最好使用 PooledDB 。后面將會提到更好的調整,尤其在使用線程安全的DB-API 2模塊時。

          當然,這兩個模塊的接口是很相似的,你可以方便的在他們之間轉換,并查看哪個更好一些。

          官方指南:https://cito.github.io/w4py-olde-docs/Webware/DBUtils/Docs/UsersGuide.html

          4 使用
          連接池對象只初始化一次,一般可以作為模塊級代碼來確保。 PersistentDB的連接例子:

          import DBUtils.PersistentDB
          persist=DBUtils.PersistentDB.PersistentDB(dbpai=MySQLdb,maxusage=1000,kwargs)
          這里的參數dbpai指使用的底層數據庫模塊,兼容DB-API的。maxusage則為一個連接最大使用次數,參考了官方例子。后面的
          kwargs則為實際傳遞給MySQLdb的參數。

          獲取連接: conn=persist.connection() 實際編程中用過的連接直接關閉 conn.close() 即可將連接交還給連接池。

          PooledDB使用方法同PersistentDB,只是參數有所不同。

          dbapi :數據庫接口
          mincached :啟動時開啟的空連接數量
          maxcached :連接池最大可用連接數量
          maxshared :連接池最大可共享連接數量
          maxconnections :最大允許連接數量
          blocking :達到最大數量時是否阻塞
          maxusage :單個連接最大復用次數
          setsession :用于傳遞到數據庫的準備會話,如 [”set name UTF-8″] 。

          參考:http://blog.csdn.net/amandaxy/article/details/7327981
          其它實例:http://www.2cto.com/database/201605/506745.html

          列教程來了!畢業設計頭大的伙伴,看過來了!基礎薄弱的伙伴,需要視頻教程的,可以留言,我整理后發大家!

          整體流程

          做一個項目,首先是需求分析,將要做的東西說明白。

          然后技術選型,根據需求選擇合適的技術架構,小項目適宜采用簡單快速的架構,不是什么項目都要搞的很復雜。

          然后是開發環境安裝,JDK、Eclipse、Tomcat、MySQL、Navicat(用來操作數據庫),這個專門拿出一章來講講。

          然后是整體設計,先想好有哪些頁面,哪些類,哪些功能。

          然后是具體開發階段。

          最后測試投產,為了方便演示,我們演示下如何把項目打包放到云服務器上,這樣演示明顯更加高大上。

          需求分析

          校園新聞網站非常簡單,用戶有兩類,游客和管理員。

          游客可以瀏覽新聞,無需登錄。管理員可以登錄后發布新聞。

          技術選型

          為了讓項目足夠簡單,不使用Servlet。主要使用JSP,數據庫用MySQL。也會涉及一些html和css,畢竟要顯示頁面嘛,這塊盡可能簡單點。

          所以技術選型為html+css+JSP+MySQL,當然JSP主要還是使用Java語言。

          后面的教程,也會繼續更新,伙伴們可以關注哦

          需要視頻教程的伙伴,回復:Java,即可獲得!

          們可以先通過requests庫獲取網頁數據,然后通過mysql-connector-python庫來連接MySQL數據庫,實現將數據存儲到MySQL數據庫中的操作。具體操作步驟如下所示。

          安裝所需庫

          安裝mysql-connector-python和requests庫,可以使用pip進行安裝,如下所示。

          pip install mysql-connector-python requests

          連接MySQL數據庫

          通過mysql-connector-python庫來連接MySQL數據庫,下面是一個示例代碼來演示如何進行連接如下所示。

          import mysql.connector
          
          # 配置數據庫連接
          db_config={
              'user': 'your_username',
              'password': 'your_password',
              'host': 'your_host',
              'database': 'your_database'
          }
          
          # 創建數據庫連接
          connection=mysql.connector.connect(**db_config)
          cursor=connection.cursor()

          從網頁獲取數據

          爬蟲獲取數據,使用requests庫獲取網頁數據并解析所需的數據,然后進行數據的提取操作。

          import requests
          
          # 獲取網頁內容
          url='https://example.com'
          response=requests.get(url)
          web_content=response.text
          
          # 假設我們從網頁內容中提取某些數據,例如標題和描述
          from bs4 import BeautifulSoup
          
          soup=BeautifulSoup(web_content, 'html.parser')
          title=soup.title.string
          description=soup.find('meta', {'name': 'description'})['content']

          寫入數據庫

          將上面的兩個代碼整合到一起,通過mysql-connector-python庫將提取的數據插入到MySQL數據庫中,如下所示。

          # 定義插入數據的SQL語句
          insert_query="""
          INSERT INTO your_table (title, description)
          VALUES (%s, %s)
          """
          
          # 執行插入操作
          cursor.execute(insert_query, (title, description))
          
          # 提交事務
          connection.commit()

          關閉數據庫連接

          完成操作后,我們需要關閉數據庫連接,如下所示。

          # 關閉游標和連接
          cursor.close()
          connection.close()

          完整的代碼實現

          下面是將以上所有步驟整合在一起的完整的代碼示例,如下所示。

          import mysql.connector
          import requests
          from bs4 import BeautifulSoup
          
          # 配置數據庫連接
          db_config={
              'user': 'your_username',
              'password': 'your_password',
              'host': 'your_host',
              'database': 'your_database'
          }
          
          # 創建數據庫連接
          connection=mysql.connector.connect(**db_config)
          cursor=connection.cursor()
          
          try:
              # 獲取網頁內容
              url='https://example.com'
              response=requests.get(url)
              web_content=response.text
          
              # 解析網頁內容
              soup=BeautifulSoup(web_content, 'html.parser')
              title=soup.title.string
              description=soup.find('meta', {'name': 'description'})['content']
          
              # 定義插入數據的SQL語句
              insert_query="""
              INSERT INTO your_table (title, description)
              VALUES (%s, %s)
              """
          
              # 執行插入操作
              cursor.execute(insert_query, (title, description))
          
              # 提交事務
              connection.commit()
          
          except Exception as e:
              print(f"Error: {e}")
              connection.rollback()
          
          finally:
              # 關閉游標和連接
              cursor.close()
              connection.close()

          在這個代碼中我們展示了如何實現Python鏈接MySQL數據,然后將從網頁上獲取到的數據存儲到數據庫中,在實際操作過程中,我們可以將上面的數據庫鏈接換成自己的數據庫鏈接,然后將網頁數據提取操作換成我們需要的操作就可以完成爬蟲數據落庫的邏輯了。


          主站蜘蛛池模板: 亚洲高清毛片一区二区| 精品国产一区二区二三区在线观看| 日韩精品无码一区二区三区AV| 蜜桃传媒视频麻豆第一区| 精品人妻无码一区二区色欲产成人| 中文字幕一区二区人妻性色| 日本一区二区三区久久| 亚洲第一区视频在线观看| 亚洲一区精品无码| 精品一区二区三区四区电影| 亚洲一区二区观看播放| 91在线一区二区| 无码精品人妻一区二区三区中| 性色AV 一区二区三区| 暖暖免费高清日本一区二区三区| 老熟妇仑乱一区二区视頻| 国产a∨精品一区二区三区不卡| 一区二区在线免费视频| 无码日韩人妻AV一区免费l| 国产一区二区三区在线观看影院| 国产SUV精品一区二区88| 中文无码一区二区不卡αv| 91精品福利一区二区| 88国产精品视频一区二区三区| 国产一区二区内射最近更新| 国产一区二区三区乱码| 国产一区二区三区久久精品| 国产一区二区三精品久久久无广告| 亚洲av区一区二区三| 国产成人精品a视频一区| 久久久精品日本一区二区三区| 中文字幕一区二区三| 免费日本一区二区| 亚洲va乱码一区二区三区| 午夜影院一区二区| 日本一区二区三区久久| 成人精品一区二区三区中文字幕| 国产伦理一区二区| 亚洲欧美国产国产一区二区三区| 人妻夜夜爽天天爽一区| 无码日韩人妻AV一区二区三区 |