在Python中使用MYSQL

2021-09-02 11:55:00 字數 2891 閱讀 8921

緣由

近期在折騰乙個小東西須要抓取網上的頁面。然後進行解析。將結果放到

資料庫中。

了解到python在這方面有優勢,便選用之。

由於我有臺

server上面安裝有

mysql,自然使用之。在進行資料庫的這個操作過程中遇到了不少問題,這裡

記錄一下,大家共勉。

python中mysql的呼叫

之後能夠通過mysqldb進行資料庫操作。檢視文件,了解到python中提供了乙個mysql時直接實現了mysql的c語言api。mysqldb是對其在更高一層的封裝,因此,使用起來更加方便。我們能夠使用mysql,但更好的方法是使用mysqldb

安裝中遇到的問題

通過python setup.py build 執行安裝會提示no module named setuptools

解決方法,安裝之

sudo apt-get install python-setuptools

再次執行,可能還是會出錯 mysql_config not found

此時我們須要安裝mysqld-dev

sudo apt-get install libmysqld-dev

可能再次執行還會出現錯誤。類似這樣 `

building 『mysql』 extension gcc -pthread -fno-strict-aliasing -dndebug -g -fwrapv -o2 -wall -wstrict-prototypes -fpic -dversion_info=(1,2,3,』final』,0) -dversion=1.2.3 -i/usr/include/mysql -i/usr/include/python2.7 -c mysql.c -o build/temp.linux-i686-2.7/mysql.o -dbig_joins=1 -fno-strict-aliasing -duniv_linux -duniv_linux in file included from mysql.c:29:0: pymemcompat.h:10:20: fatal error: python.h: no such file or directory

解決方式

sudo apt-get install python-dev

這步驟是安裝python的一些開發用的標頭檔案。

基本上前面三種之後,不會再出現其它問題了。

可是假設mysql是自己安裝的。而且lib檔案沒有放到/usr/local/lib以下則還會報錯。

解決的方法將檔案軟連線到這個資料夾下,或者改動系統的/etc/ld.so.cnf檔案,把我們lib所在的資料夾放進去。兩種方法都能夠。然後在ldconfig,讓其生效就可以。

比方我們用第一種方法 ln -s /usr/local/mysql/lib/mysql/libmysqlclient* /usr/lib

實際使用

引入mysqldb庫

import mysqldb

連線資料庫

conn=mysqldb.connect(host=「localhost」,user=「root」,passwd=「sa」,db=「mytable」,charset=「utf8」)

提供的connect方法用來和資料庫建立連線,接收數個引數,返回連線物件.

執行語句和取結果

cursor=conn.cursor() n=cursor.execute(sql,param)

首先,我們用使用連線物件獲得乙個cursor物件,接下來,我們會使用cursor提供的方法來進行

工作.這些方法包含兩大類:1.執行命令,2.接收返回值

後面再具體說。這裡不詳說

結束。關閉資料庫連線

須要分別的關閉指標物件和連線物件.他們有名字同樣的方法

cursor.close()

conn.close()

經常使用操作api

對事務操作的支援,標準的方法 commit() 提交

rollback() 回滾

cursor用來執行命令的方法:

callproc(self, procname, args):用來執行儲存過程,接收的引數為儲存過程名和引數列表,返回值為受影響的行數

execute(self, query, args):執行單條sql語句,接收的引數為sql語句本身和使用的引數列表,返回值為受影響的行數

executemany(self, query, args):執行單挑sql語句,可是反覆執行引數列表裡的引數,返回值為受影響的行數 nextset(self):移動到下乙個結果集

cursor用來接收返回值的方法:

fetchall(self):接收所有的返回結果行.

fetchmany(self, size=none):接收size條返回結果行.假設size的值大於返回的結果行的數量,則會返回cursor.arraysize條資料.

fetchone(self):返回一條結果行.

scroll(self, value, mode=『relative』):移動指標到某一行.假設mode=『relative』,則表示從當前所在行移動value條,假設 mode=『absolute』,則表示從結果集的第一行移動value條.

最後插一句

電腦公升級到ubuntu14.04又一次裝的,之前的部落格倉庫沒了,又一次從github上面拉回來。中間出了點差錯。我刪除檔案,這篇

文章差點沒有了。只是還好如今能看到這篇文章。

在MySQL中使用memcached

這裡提供了一組mysql的udf函式,可以直接在sql中操作memcached。安裝比較簡單,需要安裝 libmemcached 0.12.tar.gz,然後安裝 memcached functions mysql 0.1.tar.gz就可以了。它的幫助檔案中提供了使用方法。只是需要設定ld lib...

在Django中使用mysql

在django中使用mongodb 1 可以選擇虛擬環境,進入開發環境的虛擬空間,不知道的請看傳送門 2 基本包的版本 django 1.11.8 mongoengine 0.15.0 3 安裝包 pip install mysqlclient4 建立乙個新的django專案,並指定到虛擬空間的py...

在docker中使用MySQL

docker pull mysql 5.7.32版本查詢 檢視常用docker 命令 建立目錄,用於宿主機與容器的對映,以便將資料儲存在宿主機,而不是容器中。usr local docker mysql conf,配置檔案 usr local docker mysql logs,日誌檔案 usr l...