一、python3中安裝PyMySQL模組
命令安裝:
sudo apt-get install python-mysql
或者
pip install pymysql
2、使用在pyCharm中安裝PyMySQL模組
二、PyMysql物件說明
1、Connection物件
- 用於建立與資料庫的連線
- 建立物件:呼叫connect()方法
conn=connect(引數列表)
- 引數host:連線的mysql主機,如果本機是'localhost'
- 引數port:連線的mysql主機的埠,預設是3306
- 引數database:資料庫的名稱
- 引數user:連線的使用者名稱
- 引數password:連線的密碼
- 引數charset:通訊採用的編碼方式,預設是'gb2312',要求與資料庫建立時指定的編碼一致,否則中文會亂碼
物件的方法
-
- close()關閉連線
- commit()事務,所以需要提交才會生效
- rollback()事務,放棄之前的操作
- cursor()返回Cursor物件,用於執行sql語句並獲得結果
2、Cursor物件
- 執行sql語句
- 建立物件:呼叫Connection物件的cursor()方法
cursor1=conn.cursor()
物件的方法
- close()關閉
- execute(operation [, parameters ])執行語句,返回受影響的行數
- fetchone()執行查詢語句時,獲取查詢結果集的第一個行資料,返回一個元組
- next()執行查詢語句時,獲取當前行的下一行
- fetchall()執行查詢時,獲取結果集的所有行,一行構成一個元組,再將這些元組裝入一個元組返回
- scroll(value[,mode])將行指標移動到某個位置
- mode表示移動的方式
- mode的預設值為relative,表示基於當前行移動到value,value為正則向下移動,value為負則向上移動
- mode的值為absolute,表示基於第一條資料的位置,第一條資料的位置為0
物件的屬性
- rowcount只讀屬性,表示最近一次execute()執行後受影響的行數
- connection獲得當前連線物件
三、對Mysql基本操作的封裝
1、我們建立MySQLManager.py模組,對Mysql的基本操作封裝
# coding=utf-8; # 匯入模組pymysql模組 import pymysql # 封裝MySQL資料庫管理類 class MySQL_Manager(object): # 初始化方法 def __init__(self,host,port,database,user,password,charset='utf8'): # 配置連線MySQL資料庫的基本資訊 self.host = host self.port = port self.database = database self.user = user self.password = password self.charset = charset # 使用python3連結MySQL資料庫 def connect(self): # 連結 self.connect = pymysql.connect(host = self.host, port = self.port, database = self.database, user = self.user, password = self.password,charset = self.charset) # 得到一個可以執行SQL語句的游標物件 self.cursor = self.connect.cursor() # 操作完畢後關閉 def close(self): # 關閉執行語句 self.cursor.close() # 關閉連線 self.connect.close() # 建立表操作 def create_table(self,sql,params=()): # 先連線 self.connect() # 執行建立語句 self.cursor.execute(sql,params) # 關閉連線 self.close() # 查詢一條資料 def select_one(self,sql,params=()): result = None try: self.connect() self.cursor.execute(sql,params) result = self.cursor.fetchone() self.close() except Exception as e: print(e) return result # 查詢全部資料 def select_all(self,sql,params=()): list=() try: self.connect() self.cursor.execute(sql,params) list = self.cursor.fetchall() self.close() except Exception as e: print(e) return list # 插入 def insert(self, sql, params=()): return self.__edit(sql, params) # 修改 def update(self, sql, params=()): return self.__edit(sql, params) # 刪除 def delete(self, sql, params=()): return self.__edit(sql, params) # 插入、修改、刪除其實一樣的,只是sql程式碼不同,但是為了程式碼的閱讀性更高,還是分開寫 def __edit(self, sql, params): count = 0 try: self.connect() count = self.cursor.execute(sql, params) self.connect.commit() self.close() except Exception as e: print(e) return count
2.建立testMySQL.py模組對我們建立的MySQLManager.py模組測試
# coding = utf-8 from MySQLManager import * mysql_manager = MySQL_Manager("192.168.100.114",3306,"Hero","root","123456") # 建立表 create_sql = "create table hero(id int auto_increment primary key,name varchar(20) not null unique,skill varchar(20) not null) engine=innodb default charset=utf8;" mysql_manager.create_table(create_sql) # 新增資料 insert_sql = "insert into hero(id,name,skill) values(1,'李白','青蓮劍歌');" mysql_manager.insert(insert_sql) # 查詢語句 select_sql = "select * from hero;" list = mysql_manager.select_all(select_sql) print(list) # 修改 update_sql = "update hero set name='韓信' where id=1;" mysql_manager.update(update_sql) # 刪除語句 delete_sql = "delete from hero where id=1;" mysql_manager.delete(delete_sql)
說明:
- 為什麼MySQLManager裡面的方法都有params引數,這裡卻沒用?因為這只是測試,我把所有的引數都直接寫在了sql語句中,但是為了程式的可擴充套件性,建議大家還是使用引數params
- testMysql.py檔案每執行一次裡面對資料庫的操作就會執行一次,例如建立表的操作只需要執行一次,當我們建立表成功之後,就可以把建立表的方法註釋掉,不用再建立了,同樣的,新增,刪除也是一樣。