標籤: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 資料庫