一、python3中安裝PyMySQL模塊 命令安裝: 或者 2、使用在pyCharm中安裝PyMySQL模塊 二、PyMysql對象說明 1、Connection對象 用於建立與資料庫的連接 創建對象:調用connect()方法 參數host:連接的mysql主機,如果本機是'localhost' ...
一、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文件每運行一次裡面對資料庫的操作就會執行一次,例如創建表的操作只需要執行一次,當我們創建表成功之後,就可以把創建表的方法註釋掉,不用再創建了,同樣的,添加,刪除也是一樣。