Python的MySQLdb實戰記錄


 

 

 

1Python數據庫接口

Python標准數據庫接口為Python DB-API,pythondb-api為開發人員提供了數據庫應用編程接口。Python數據庫接口支持非常多的數據庫,其中對

Ø  mSQL

Ø  GadFly

Ø  MySQL

Ø  PostgreSQL

Ø  Microsoft SQL Server 2000

Ø  Informix

Ø  Interbase

Ø  Oracle

Ø  Sybase

 

不同的數據庫,需要下載不同的DB API模塊,所以這里訪問MySQL需要下載MySQL模塊,Python的DB-API,提供了數據庫接口,使用它連接各個數據庫來操作數據庫,使用流程如下:

n  引入API模塊。

n  獲取與數據庫的連接。

n  執行SQL語句和存儲過程。

n  關閉數據庫連接。

 

 

 

2MySQLdb環境准備

MySQLdb 是用於Python鏈接Mysql數據庫的接口,它實現了Python 數據庫 API 規范 V2.0,基於 MySQL C API 上建立的。先檢測是否已經安裝了MySQLdb,用腳本來檢測

# 檢測腳步check_python.sh
[root@03_sdwm ~]# more check_python.sh
#!/usr/bin/python
# -*- coding: UTF-8 -*-

import MySQLdb
[root@03_sdwm ~]#
# 開始檢測
[root@03_sdwm ~]# sh check_python.sh
import: unable to open X server `' @ import.c/ImportImageCommand/359.
[root@03_sdwm ~]#



可以來https://pypi.python.org/pypi/MySQL-python上面下載MySQLdb模塊,目前版本如下,我們選擇比較新的1.2.5版本:

Package

Description

MySQL-python 1.2.5

Python interface to MySQL

MySQL-python 1.2.4

Python interface to MySQL

MySQL-python 1.2.3

Python interface to MySQL

 

如果您選擇二進制文件發行版本的話,安裝過程基本安裝提示即可完成。如果從源代碼進行安裝的話,則需要切換到MySQLdb發行版本的頂級目錄,並鍵入下列命令,我們這里選擇源碼包安裝,下載下來的文件壓縮包為MySQL-python-1.2.5.zip,上傳到服務器上,開始准備安裝

$ gunzip MySQL-python-1.2.5.zip

$ cd MySQL-python-1.2.5

$ python setup.py build

$ python setup.py install

 

 

 

3,操作MySQL

連接數據庫:

#!/usr/bin/python# -*- coding: UTF-8 -*- import MySQLdb # 打開數據庫連接db = MySQLdb.connect(“192.168.121.53”,”t1”,”test123”,”test” ) # 使用cursor()方法獲取操作游標cursor = db.cursor() # 使用execute方法執行SQL語句cursor.execute("SELECT VERSION()") # 使用 fetchone() 方法獲取一條數據庫。data = cursor.fetchone() print "Database version : %s " % data # 關閉數據庫連接db.close()


 

 

操作數據庫,建表:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
import MySQLdb
 
# 打開數據庫連接
db = MySQLdb.connect(“192.168.121.53”,”t1”,”test123”,”test” )
 
# 使用cursor()方法獲取操作游標
cursor = db.cursor()
 
# 如果數據表已經存在使用 execute() 方法刪除表。
cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")
 
# 創建數據表SQL語句
sql = """CREATE TABLE EMPLOYEE (
         FIRST_NAME  CHAR(20) NOT NULL,
         LAST_NAME  CHAR(20),
         AGE INT,  
         SEX CHAR(1),
         INCOME FLOAT )"""
 
cursor.execute(sql)
 
# 關閉數據庫連接
db.close()

 

 

 

操作數據庫,插入數據:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
import MySQLdb
 
# 打開數據庫連接
db = MySQLdb.connect(“192.168.121.53”,”t1”,”test123”,”test” )
 
# 使用cursor()方法獲取操作游標
cursor = db.cursor()
 
# SQL 插入語句
sql = "INSERT INTO EMPLOYEE(FIRST_NAME, \
       LAST_NAME, AGE, SEX, INCOME) \
       VALUES ('%s', '%s', '%d', '%c', '%d' )" % \
       ('Mac', 'Mohan', 20, 'M', 2000)
try:
   # 執行sql語句
   cursor.execute(sql)
   # 提交到數據庫執行
   db.commit()
except:
   # 發生錯誤時回滾
   db.rollback()
 
# 關閉數據庫連接
db.close()

 

 

更新操作用於更新數據表的的數據,以下實例將 TESTDB表中的 SEX 字段全部修改為 'M'AGE 字段遞增1

#!/usr/bin/python

# -*- coding: UTF-8 -*-

 

import MySQLdb

 

# 打開數據庫連接

db = MySQLdb.connect(“192.168.121.53”,”t1”,”test123”,”test”)

 

# 使用cursor()方法獲取操作游標

cursor = db.cursor()

 

# SQL 更新語句

sql = "UPDATE EMPLOYEE SET AGE = AGE + 1

                          WHERE SEX ='%c'" % ('M')

try:

   # 執行SQL語句

  cursor.execute(sql)

   # 提交到數據庫執行

   db.commit()

except:

   # 發生錯誤時回滾

   db.rollback()

 

# 關閉數據庫連接

db.close()

 

 

刪除操作用於刪除數據表中的數據,以下實例演示了刪除數據表 EMPLOYEE AGE 大於 20 的所有數據:

#!/usr/bin/python

# -*- coding: UTF-8 -*-

 

import MySQLdb

 

# 打開數據庫連接

db = MySQLdb.connect(“192.168.121.53”,”t1”,”test123”,”test”)

 

# 使用cursor()方法獲取操作游標

cursor = db.cursor()

 

# SQL 刪除語句

sql = "DELETE FROM EMPLOYEE WHERE AGE >'%d'" % (20)

try:

   # 執行SQL語句

  cursor.execute(sql)

   # 提交修改

   db.commit()

except:

   # 發生錯誤時回滾

   db.rollback()

 

# 關閉連接

db.close()

 

 

查詢操作,查詢EMPLOYEE表中salary(工資)字段大於1000的所有數據:

#!/usr/bin/python

# -*- coding: UTF-8 -*-

 

import MySQLdb

 

# 打開數據庫連接

db = MySQLdb.connect(“192.168.121.53”,”t1”,”test123”,”test”)

 

# 使用cursor()方法獲取操作游標

cursor = db.cursor()

 

# SQL 查詢語句

sql = "SELECT * FROM EMPLOYEE \

      WHERE INCOME > '%d'" % (1000)

try:

   # 執行SQL語句

  cursor.execute(sql)

   # 獲取所有記錄列表

  results = cursor.fetchall()

   for row in results:

     fname = row[0]

     lname = row[1]

     age = row[2]

     sex = row[3]

     income = row[4]

      # 打印結果

      print "fname=%s,lname=%s,age=%d,sex=%s,income=%d" % \

            (fname, lname, age, sex, income )

except:

   print "Error: unable to fecth data"

 

# 關閉數據庫連接

db.close()

 

 

 

 

參考文章:http://www.runoob.com/python/python-mysql.html



注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com