天天看點

python3安裝pymysql_python3中安裝PyMySQL子產品

一、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子產品

python3安裝pymysql_python3中安裝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檔案每運作一次裡面對資料庫的操作就會執行一次,例如建立表的操作隻需要執行一次,當我們建立表成功之後,就可以把建立表的方法注釋掉,不用再建立了,同樣的,添加,删除也是一樣。