Python學習 Day16 Python3 MySQL 資料庫

來源:互聯網
上載者:User

標籤:creat   版本號碼   遊標   mysql   mysql 安裝   查詢語句   SQ   代碼   close   

Python3 MySQL 資料庫

Python3 使用 PyMySQL 串連資料庫,並實現簡單的增刪改查。

什麼是 PyMySQL?

PyMySQL 是在 Python3.x 版本中用於串連 MySQL 伺服器的一個庫,Python2中則使用mysqldb。

PyMySQL 遵循 Python 資料庫 API v2.0 規範,並包含了 pure-Python MySQL 用戶端庫。

PyMySQL 安裝

在使用 PyMySQL 之前,我們需要確保 PyMySQL 已安裝。

PyMySQL :https://github.com/PyMySQL/PyMySQL。

如果還未安裝,我們可以使用以下命令安裝最新版的 PyMySQL:

$ pip install PyMySQL

如果你的系統不支援 pip 命令,可以使用以下方式安裝:

1、使用 git 命令下載安裝包安裝(你也可以手動下載):

$ git clone https://github.com/PyMySQL/PyMySQL$ cd PyMySQL/$ python3 setup.py install

2、如果需要制定版本號碼,可以使用 curl 命令來安裝:

$ # X.X 為 PyMySQL 的版本號碼$ curl -L https://github.com/PyMySQL/PyMySQL/tarball/pymysql-X.X | tar xz$ cd PyMySQL*$ python3 setup.py install$ # 現在你可以刪除 PyMySQL* 目錄

注意:請確保您有root許可權來安裝上述模組。

安裝的過程中可能會出現"ImportError: No module named setuptools"的錯誤提示,意思是你沒有安裝setuptools,你可以訪問https://pypi.python.org/pypi/setuptools 找到各個系統的安裝方法。

Linux 系統安裝執行個體:

$ wget https://bootstrap.pypa.io/ez_setup.py$ python3 ez_setup.py
資料庫連接

串連資料庫前,請先確認以下事項:

  • 您已經建立了資料庫 TESTDB.
  • 在TESTDB資料庫中您已經建立了表 EMPLOYEE
  • EMPLOYEE表欄位為 FIRST_NAME, LAST_NAME, AGE, SEX 和 INCOME。
  • 串連資料庫TESTDB使用的使用者名稱為 "testuser" ,密碼為 "test123",你可以可以自己設定或者直接使用root使用者名稱及其密碼,Mysql資料庫使用者授權請使用Grant命令。
  • 在你的機子上已經安裝了 Python MySQLdb 模組。

執行個體:

以下執行個體連結 Mysql 的 TESTDB 資料庫:

執行個體(Python 3.0+)

#!/usr/bin/python3 import pymysql # 開啟資料庫連接db = pymysql.connect("localhost","testuser","test123","TESTDB" ) # 使用 cursor() 方法建立一個遊標對象 cursorcursor = db.cursor() # 使用 execute()  方法執行 SQL 查詢 cursor.execute("SELECT VERSION()") # 使用 fetchone() 方法擷取單條資料.data = cursor.fetchone() print ("Database version : %s " % data) # 關閉資料庫連接db.close()

執行以上指令碼輸出結果如下:

Database version : 5.5.20-log
建立資料庫表

如果資料庫連接存在我們可以使用execute()方法來為資料庫建立表,如下所示建立表EMPLOYEE:

執行個體(Python 3.0+)

#!/usr/bin/python3 import pymysql # 開啟資料庫連接db = pymysql.connect("localhost","testuser","test123","TESTDB" ) # 使用 cursor() 方法建立一個遊標對象 cursorcursor = db.cursor() # 使用 execute() 方法執行 SQL,如果表存在則刪除cursor.execute("DROP TABLE IF EXISTS EMPLOYEE") # 使用預先處理語句建立表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()
資料庫插入操作

以下執行個體使用執行 SQL INSERT 語句向表 EMPLOYEE 插入記錄:

執行個體(Python 3.0+)

#!/usr/bin/python3 import pymysql # 開啟資料庫連接db = pymysql.connect("localhost","testuser","test123","TESTDB" ) # 使用cursor()方法擷取操作遊標 cursor = db.cursor() # SQL 插入語句sql = """INSERT INTO EMPLOYEE(FIRST_NAME,         LAST_NAME, AGE, SEX, INCOME)         VALUES (‘Mac‘, ‘Mohan‘, 20, ‘M‘, 2000)"""try:   # 執行sql語句   cursor.execute(sql)   # 提交到資料庫執行   db.commit()except:   # 如果發生錯誤則復原   db.rollback() # 關閉資料庫連接db.close()

以上例子也可以寫成如下形式:

執行個體(Python 3.0+)

#!/usr/bin/python3 import pymysql # 開啟資料庫連接db = pymysql.connect("localhost","testuser","test123","TESTDB" ) # 使用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)   # 執行sql語句   db.commit()except:   # 發生錯誤時復原   db.rollback() # 關閉資料庫連接db.close()

以下代碼使用變數向SQL語句中傳遞參數:

..................................user_id = "test123"password = "password"con.execute(‘insert into Login values("%s", "%s")‘ %              (user_id, password))..................................
資料庫查詢操作

Python查詢Mysql使用 fetchone() 方法擷取單條資料, 使用fetchall() 方法擷取多條資料。

  • fetchone(): 該方法擷取下一個查詢結果集。結果集是一個對象
  • fetchall(): 接收全部的返回結果行.
  • rowcount: 這是一個唯讀屬性,並返回執行execute()方法後影響的行數。

執行個體:

查詢EMPLOYEE表中salary(工資)欄位大於1000的所有資料:

執行個體(Python 3.0+)

#!/usr/bin/python3 import pymysql # 開啟資料庫連接db = pymysql.connect("localhost","testuser","test123","TESTDB" ) # 使用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 fetch data") # 關閉資料庫連接db.close()

以上指令碼執行結果如下:

fname=Mac, lname=Mohan, age=20, sex=M, income=2000
資料庫更新操作

更新操作用於更新資料表的的資料,以下執行個體將 TESTDB表中的 SEX 欄位全部修改為 ‘M‘,AGE 欄位遞增1:

 

Python學習 Day16 Python3 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.