python 在Python中使用MYSQL

來源:互聯網
上載者:User
緣由

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

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

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

  python中mysql的調用

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

  安裝中遇到的問題

  在這個頁面http://sourceforge.net/projects/mysql-python/能夠下載到最新版本號碼的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上面拉回來。中間出了點差錯。我刪除檔案,這篇文章差點沒有了。只是還好如今能看到這篇文章。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.