python 串連 mysql

來源:互聯網
上載者:User

標籤:blog   http   io   ar   os   使用   sp   for   java   

http://blog.csdn.net/yelbosh/article/details/7498641

 

資料庫的串連

模組引入之後我們就需要和資料庫進行串連了,執行個體代碼如下:

db = MySQLdb.connect("localhost","root","123456","myciti" )

這三個關鍵參數的含義一目瞭然:第一個為伺服器的地址,第二個為使用者名稱,第三個為dbms密碼,第四個為要訪問的資料庫,其實該connect函數的參數不止這些,不過由於其有預設值而且大多數情況下不用修改,因而省略了。這裡做如下列表:

 

  • host,串連的資料庫伺服器主機名稱,預設為本地主機(localhost)。

  • user,串連資料庫的使用者名稱,預設為目前使用者。

  • passwd,串連密碼,沒有預設值。

  • db,串連的資料庫名,沒有預設值。

  • conv,將文字映射到Python類型的字典。預設為MySQLdb.converters.conversions

  • cursorclass,cursor()使用的種類,預設值為MySQLdb.cursors.Cursor。

  • compress,啟用協議壓縮功能。

  • named_pipe,在windows中,與一個具名管道相串連。

  • init_command,一旦串連建立,就為資料庫伺服器指定一條語句來運行。

  • read_default_file,使用指定的MySQL設定檔。

  • read_default_group,讀取的預設組。

  • unix_socket,在unix中,串連使用的通訊端,預設使用TCP。

  • port,指定資料庫伺服器的串連連接埠,預設是3306

大家可能會注意到源碼中沒有用到連接埠號碼,這是因為MySQLdb的connect函數的該參數的預設值便是3306,如果你在安裝mysql的時候修改了資料庫的連接埠號碼,那麼你就需要在源碼中加上該參數的修改值了。

 

 

執行sql語句

串連上之後便是執行sql語句了,原始碼如下:

import MySQLdb


db = MySQLdb.connect("localhost","root","123456","myciti" )
cursor = db.cursor()
sql = """insert into article values (0,"woainimahah","http://www.aa.com","2012-9-8","wo","qq","skjfasklfj","2019","up")"""
try:
    cursor.execute(sql)
    db.commit()
except:
    db.rollback()
db.close

 

這裡需要注意的是一定要記得commit,如果不提交那麼資料庫是不會有變化的

將sql語句改變成其他,便可以實現其他靜態操作,如“delete from article where id > 3”

 

選擇和列印

串連資料庫最重要的目的便是讀取資料庫中的資訊,那麼如何擷取資料庫中的資料呢?如何提取有效資訊呢?見如下代碼:

下面的程式可以實現列印資料庫中article表中所有行的第二列的資料:

import MySQLdb


db = MySQLdb.connect("localhost","root","123456","myciti" )
cursor = db.cursor()
cursor.execute("select * from article")
data = cursor.fetchone()
while data!=None:
    print data[1]
    data = cursor.fetchone()
db.close

我們也可以使用如下代碼:

import MySQLdb


db = MySQLdb.connect("localhost","root","123456","myciti" )
cursor = db.cursor()
cursor.execute("select * from article")
datas = cursor.fetchall()
for data in datas:
    print data[1]
print cursor.rowcount,"rows in tatal"
db.close

 

我們可以從代碼中看出上面的各個函數的區別:

fetchone是從資料庫表中取出一行記錄,第二次調用便取出next行,不斷向下走

fetchall取出資料庫表中所有行的資料

rowcount讀出資料庫表中的行數

 

和java中的預留位置一樣,python中也需要這些預留位置來實現動態選擇。見如下代碼:

import MySQLdb


a = "down"
b = 4
db = MySQLdb.connect("localhost","root","123456","myciti" )
cursor = db.cursor()
cursor.execute("select * from article where trend = ‘%s‘ and id < ‘%d‘"%(a,b))
datas = cursor.fetchall()
for data in datas:
    print data[1]
print cursor.rowcount,"rows in tatal"
db.close

這裡的預留位置和java中的?預留位置還有一點區別,那就是它聲明了類型,和C中的格式輸出是一樣的。注意後面的%

那麼返回的data也是一個列表,通過使用[]操作符來訪問特定列的資料。

 

靜態插入和動態插入

靜態插入上面我們已經講了,那麼下面我們再講一下動態插入

動態插入也是用預留位置來實現的

import MySQLdb


title = "wangxinmeiwo"
url = "henxiangni "
db = MySQLdb.connect("localhost","root","123456","myciti" )
cursor = db.cursor()
sql = """insert into article values (0,"%s","%s","2012-9-8","wo","qq","skjfasklfj","2019","up")"""
try:
    cursor.execute(sql%(title,url))
    db.commit()
except:
    db.rollback()
db.close

可以看到這裡的預留位置和上面的使用方式是一樣的

 

 

update操作

預留位置的使用和上面是一樣的

import MySQLdb


title = "haoxiangni"
id=11
db = MySQLdb.connect("localhost","root","123456","myciti" )
cursor = db.cursor()
sql = """update article set title = "%s" where id = "%d" """
try:
    cursor.execute(sql%(title,id))
    db.commit()
except:
    db.rollback()
db.close

python 串連 mysql

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.