緣由
近期在折騰乙個小東西須要抓取網上的頁面。然後進行解析。將結果放到
資料庫中。
了解到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...