共計 4060 個字符,預(yù)計需要花費 11 分鐘才能閱讀完成。
自動寫代碼機器人,免費開通
本篇文章給大家分享的是有關(guān)怎么在 python 中使用 pymysql 模塊連接 mysql 數(shù)據(jù)庫,丸趣 TV 小編覺得挺實用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著丸趣 TV 小編一起來看看吧。
安裝 pymysql
pip install pymysql
2| 0 使用 pymysql
2| 1 使用數(shù)據(jù)查詢語句
查詢一條數(shù)據(jù) fetchone()
from pymysql import *
conn = connect(
host= 127.0.0.1 ,
port=3306, user= root ,
password= 123456 ,
database= itcast ,
charset= utf8 )
# 創(chuàng)建游標
c = conn.cursor()
# 執(zhí)行 sql 語句
c.execute(select * from student)
# 查詢一行數(shù)據(jù)
result = c.fetchone()
print(result)
# 關(guān)閉游標
c.close()
# 關(guān)閉數(shù)據(jù)庫連接
conn.close()
(1, 張三 , 18, b \x01)
查詢多條數(shù)據(jù) fetchall()
from pymysql import *
conn = connect(
host= 127.0.0.1 ,
port=3306, user= root ,
password= 123456 ,
database= itcast ,
charset= utf8 )
# 創(chuàng)建游標
c = conn.cursor()
# 執(zhí)行 sql 語句
c.execute(select * from student)
# 查詢多行數(shù)據(jù)
result = c.fetchall()
for item in result:
print(item)
# 關(guān)閉游標
c.close()
# 關(guān)閉數(shù)據(jù)庫連接
conn.close()
(1, 張三 , 18, b \x01)
(2, 李四 , 19, b \x00)
(3, 王五 , 20, b \x01)
更改游標的默認設(shè)置,返回值為字典
from pymysql import *
conn = connect(
host= 127.0.0.1 ,
port=3306, user= root ,
password= 123456 ,
database= itcast ,
charset= utf8 )
# 創(chuàng)建游標,操作設(shè)置為字典類型
c = conn.cursor(cursors.DictCursor)
# 執(zhí)行 sql 語句
c.execute(select * from student)
# 查詢多行數(shù)據(jù)
result = c.fetchall()
for item in result:
print(item)
# 關(guān)閉游標
c.close()
# 關(guān)閉數(shù)據(jù)庫連接
conn.close()
{id : 1, name : 張三 , age : 18, sex : b \x01}
{id : 2, name : 李四 , age : 19, sex : b \x00}
{id : 3, name : 王五 , age : 20, sex : b \x01}
返回一條數(shù)據(jù)時也是一樣的。返回字典或者時元組看個人需要。
2| 2 使用數(shù)據(jù)操作語句
執(zhí)行增加、刪除、更新語句的操作其實是一樣的。只寫一個作為示范。
from pymysql import *
conn = connect(
host= 127.0.0.1 ,
port=3306, user= root ,
password= 123456 ,
database= itcast ,
charset= utf8 )
# 創(chuàng)建游標
c = conn.cursor()
# 執(zhí)行 sql 語句
c.execute(insert into student(name,age,sex) values (%s,%s,%s) ,(小二 ,28,1))
# 提交事務(wù)
conn.commit()
# 關(guān)閉游標
c.close()
# 關(guān)閉數(shù)據(jù)庫連接
conn.close()
和查詢語句不同的是必須使用 commit() 提交事務(wù),否則操作就是無效的。
3| 0 編寫數(shù)據(jù)庫連接類
普通版
MysqlHelper.py
from pymysql import connect,cursors
class MysqlHelper:
def __init__(self,
host= 127.0.0.1 ,
user= root ,
password= 123456 ,
database= itcast ,
charset= utf8 ,
port=3306):
self.host = host
self.port = port
self.user = user
self.password = password
self.database = database
self.charset = charset
self._conn = None
self._cursor = None
def _open(self):
# print(連接已打開)
self._conn = connect(host=self.host,
port=self.port,
user=self.user,
password=self.password,
database=self.database,
charset=self.charset)
self._cursor = self._conn.cursor(cursors.DictCursor)
def _close(self):
# print(連接已關(guān)閉)
self._cursor.close()
self._conn.close()
def one(self, sql, params=None):
result: tuple = None
try:
self._open()
self._cursor.execute(sql, params)
result = self._cursor.fetchone()
except Exception as e:
print(e)
finally:
self._close()
return result
def all(self, sql, params=None):
result: tuple = None
try:
self._open()
self._cursor.execute(sql, params)
result = self._cursor.fetchall()
except Exception as e:
print(e)
finally:
self._close()
return result
def exe(self, sql, params=None):
try:
self._open()
self._cursor.execute(sql, params)
self._conn.commit()
except Exception as e:
print(e)
finally:
self._close()
該類封裝了 fetchone、fetchall、execute,省去了數(shù)據(jù)庫連接的打開和關(guān)閉和游標的打開和關(guān)閉。
下面的代碼是調(diào)用該類的小示例:
from MysqlHelper import *
mysqlhelper = MysqlHelper()
ret = mysqlhelper.all(select * from student)
for item in ret:
print(item)
{id : 1, name : 張三 , age : 18, sex : b \x01}
{id : 2, name : 李四 , age : 19, sex : b \x00}
{id : 3, name : 王五 , age : 20, sex : b \x01}
{id : 5, name : 小二 , age : 28, sex : b \x01}
{id : 6, name : 娃哈哈 , age : 28, sex : b \x01}
{id : 7, name : 娃哈哈 , age : 28, sex : b \x01}
上下文管理器版
mysql_with.py
from pymysql import connect, cursors
class DB:
def __init__(self,
host= localhost ,
port=3306,
db= itcast ,
user= root ,
passwd= 123456 ,
charset= utf8 ):
# 建立連接
self.conn = connect(
host=host,
port=port,
db=db,
user=user,
passwd=passwd,
charset=charset)
# 創(chuàng)建游標,操作設(shè)置為字典類型
self.cur = self.conn.cursor(cursor=cursors.DictCursor)
def __enter__(self):
# 返回游標
return self.cur
def __exit__(self, exc_type, exc_val, exc_tb):
# 提交數(shù)據(jù)庫并執(zhí)行
self.conn.commit()
# 關(guān)閉游標
self.cur.close()
# 關(guān)閉數(shù)據(jù)庫連接
self.conn.close()
如何使用:
from mysql_with import DB
with DB() as db:
db.execute(select * from student)
ret = db.fetchone()
print(ret)
{id : 1, name : 張三 , age : 18, sex : b \x01}
以上就是怎么在 python 中使用 pymysql 模塊連接 mysql 數(shù)據(jù)庫,丸趣 TV 小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降摹OM隳芡ㄟ^這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注丸趣 TV 行業(yè)資訊頻道。
向 AI 問一下細節(jié)