首頁  >  文章  >  後端開發  >  python 在Python中使用MYSQL

python 在Python中使用MYSQL

巴扎黑
巴扎黑原創
2016-12-07 10:19:331091瀏覽

緣由

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

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

  由於我有台server上面安裝有mysql,自然使用之。在進行資料庫的這個作業過程中遇到了不少問題,這裡記錄一下,大家共勉。

  python中mysql的呼叫

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

  安裝中遇到的問題

  在這個頁面http://sourceforge.net/projects/mysql-python/mysql-python/能夠下載到最新版本號的MySQLdb,解壓縮後運行安裝時,可能會有一些問題。

  透過python setup.py build 運行安裝會提示No module named setuptools

  解決方法,安裝之

 〜sudo 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,'ftrict -final' ) -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

〜〜〜〜〜〜〜㟎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

  實際使用

 

  conn= MySQLdb.connect(host=“localhost”,user=“root”,passwd=“sa”,db=“mytable”,charset=“utf8”)

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

  運行語句和取結果

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

  ,先我們用使用物件我們會使用cursor提供的方法來進行工作.這些方法包含兩大類:1.運行命令,2.接收回傳值

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

  結束。關閉資料庫連線

  須要分別的關閉指針對象和連接物件.他們有名字同樣的方法

  cursor.close()

  conn.close()

『〜『的方法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上面拉回來。中間出了點差錯。我刪除文件,這篇文章差點沒了。只是還好如今能看到這篇文章。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn