Python的MySQLdb實戰記錄
1,Python資料庫介面
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 關閉資料庫連線。
2,MySQLdb環境準備
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 當用例中需要用到該頁面的某元素或