一、Python3中安裝PyMySQL子產品,本章節我們将向大家介紹如何在本地搭建python開發環境。
Python可應用于多平台包括 Linux 和 Mac OS X。
你可以通過終端視窗輸入 "python" 指令來檢視本地是否已經安裝Python以及Python的安裝版本。
其實,PyMySQL該軟體包包含一個純Python MySQL用戶端庫。PyMySQL的目标是成為MySQLdb的替代品,并在CPython,PyPy和IronPython上工作。
注:PyMySQL不支援低級别的API _mysql提供了像data_seek, store_result和use_result。您應該使用PEP 249中定義的進階API 。但是支援一些API,如自動送出和ping,因為PEP 249不包含他們的用例。
軟體包包含一個純Python MySQL用戶端庫。PyMySQL的目标是成為MySQLdb的替代品,并在CPython,PyPy和IronPython上工作。
注:PyMySQL不支援低級别的API _mysql提供了像data_seek, store_result和use_result。您應該使用PEP 249中定義的進階API 。但是支援一些API,如自動送出和ping,因為PEP 249不包含他們的用例。
指令安裝:
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檔案每運作一次裡面對資料庫的操作就會執行一次,例如建立表的操作隻需要執行一次,當我們建立表成功之後,就可以把建立表的方法注釋掉,不用再建立了,同樣的,添加,删除也是一樣。