1. 程式人生 > >Python的MySQLdb實戰記錄

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
[[email protected]_sdwm ~]# more check_python.sh
#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
import MySQLdb
[[email protected]
_sdwm ~]# # 開始檢測 [[email protected]_sdwm ~]# sh check_python.sh import: unable to open X server `' @ import.c/ImportImageCommand/359. [[email protected]_sdwm ~]#


Package

Description

如果您選擇二進位制檔案發行版本的話,安裝過程基本安裝提示即可完成。如果從原始碼進行安裝的話,則需要切換到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


相關推薦

Java Web項目實戰記錄(數據庫表設計)

borde 信息管理 基本 relation 都是 系統設計 width 進行 方便 又是忙到這個點 雖然累,但是看著自己的項目在一點一點的成長,心裏滿滿的成就感>_< 今天上了一下午的cep(職場社交禮儀規劃課程),是不是職場就像cep老師說的那麽的勾心鬥角呢

Angular實戰記錄

rms ted 通過 enc 對象 pic 創建 form ble 當ngModel雙向綁定非基本數據類型值時 子組件中ngModel綁定的值改變時,通過onChangeCallback 傳回父組件時,有兩種情況: 基本數據類型:string/number 等變量,父組件

vue2.0實戰記錄

mage ins webp 初始化 cas 資源 記錄 image .json 1. 初始化項目vue init webpack caseone cd caseonecnpm installcnpm install less less-loader -Dcnpm insta

軟文營銷實戰記錄

最近拜讀了徐茂權老師的《 網路營銷決勝武器(第2版)》,下面會梳理書中的內容,記錄下以後可能會用到的軟文營銷的技巧。 一、軟文載體 1、平面媒體軟文:報紙、期刊。 2、非正式出版的基於印刷、列印形式載體的軟文:企業印刷的宣傳冊、企業內刊等。 3、硬廣中的軟文:戶外廣告、平面媒體廣告中的文字。

MySQL之SQL優化實戰記錄

背景 本次SQL優化是針對javaweb中的表格查詢做的。 部分網路架構圖   業務簡單說明 N個機臺將業務資料傳送至伺服器,伺服器程式將資料入庫至MySQL資料庫。伺服器中的javaweb程式將資料展示到網頁上供使用者檢視。 原資料庫設計 wind

實戰記錄3

實戰 alt 創建 技術 圖片 img src 分享圖片 nbsp 創建UserServlet 繼承Baseservlet 實戰記錄3

【Unity 實戰記錄】(一)攝像機區域內跟隨物體

模仿Cinemachined 效果,用Cinemachine可輕鬆實現,貼程式碼 1 using System.Collections; 2 using System.Collections.Generic; 3 using UnityEngine; 4 5 public cla

實戰記錄4

UserService.userRegist(user);這部分屬於預寫,寫完會報錯 滑鼠移到函式名上,建立函式 通過server層呼叫dao層,在處理資料庫 隱形邏輯   : UserServlet--》new UserServiceImp介面的實現--》UserServ

mysql 多例項 主從複製實戰記錄

本文章: 參考 跟老男孩學linux-web叢集實戰 第九章 大環境: contos:Linux localhost 2.6.32-754.3.5.el6.x86_64 #1 SMP Tue Aug 14 20:46:41 UTC 2018 x86_64 x8

sqli-labs實戰記錄(一)

前言 最近啊先自己SQL注入確實不行,我只能拿出sql注入的基礎部分來練練收了,這個實驗環境是sqlilabs 一些前置知識 系統函式 介紹幾個常用函式: 1. version()——MySQL 版本 2. user()——資料庫使用者名稱 3. database()——

Hive-實戰記錄2

Hive-實戰記錄2 兩週的在Hive上進行資料的操作,發現實際上的操作程式碼邏輯和Mysql的程式碼基本相同,唯有一些不同是,Hive不支援一個單獨的資料元進行修改,但是可以新增行和列。另外,除了用最簡單的insert進行寫入外,可以用指令碼的方式寫入新的資料,和表格。 這次記錄一

Hive-實戰記錄1

Hive-實戰記錄1 一般的SQL支援UPDATE等對table內資料進行改變等操作,Hive不支援。所以在具體業務中,需要重新定義具體value時,需要重新create新的table。 範例: 存在的table有:tmp_db.stream 和 tmp_db.tmp_dim_inf

Ubantu16.04 64bit 搭建 docker + k8s 實戰記錄(個人備忘)

之前在centos7 搭建了 docker1.13 和 k8s 1.5.2 ,最後,k8s 的 kube-dns 沒有建立成功,flannel 網路沒有建立成功。今天這個 ubantu 都成了。 harbor 的安裝請看我的其他博文。 注意兩點: 一

升級 Elasticsearch 叢集數量實戰記錄

搜尋引擎 升級 Elasticsearch 叢集數量實戰記錄   現在線上有一個elasticsearch叢集搜尋服務有三臺elasticsearch例項(es1、es2、es3),打算將其升級為5臺(增加es4、es5)。這篇文章主要是

flume實戰記錄

使用Flume關鍵就是寫配置檔案需求一:從指定網路埠採集資料輸出到控制檯conf的書寫# example.conf: A single-node Flume configuration# Name the components on this agenta1.sources

Halcon實戰記錄之一《劃分影象區域為中心,四邊,四角》

在做影象處理的時候,我們有時候對影象的不同區域的處理方式不一樣,我這裡寫下我最近使用的方法,將一副影象分成三個區域–中心,四邊,四角,如下圖: 邊的最小寬度和高度佔影象的比例為Ratio,例如Rato等於0.1,即中心佔影象的0.8的比例。 1、獲取中心

Web基礎之Servlet+JDBC+JSP專案實戰記錄(一)

package com.huaxin.dao; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sq

python UI自動化實戰記錄三:pageobject-基類

指令碼思路:使用pageobject模式,寫一個basepage基類,所有頁面的通用方法封裝到基類中。 專案中的測試頁面page1和page2都繼承自basepage基類。可使用基類定義的方法。基類裡會將webdriver和page合二為一,既將webdriver的操作改寫成page的方法。  

python UI自動化實戰記錄四:測試頁面1-pageobject

該部分記錄測試頁面1-IndexPage,所有首頁上的元素定位、操作、獲取屬性等方法都寫在該類中。 1 首頁類繼承自BasePage 2 首頁類第一部分寫的是所有的定位器 3 首頁類第二部分類的方法,包括提取頁面元素,頁面元素的操作、獲取屬性、驗證元素屬性正確性等 4 當用例中需要用到該頁面的某元素或