久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

怎么在python中使用pymysql模塊連接mysql數(shù)據(jù)庫

149次閱讀
沒有評論

共計 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é)

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-12-04發(fā)表,共計4060字。
轉(zhuǎn)載說明:除特殊說明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 凤山县| 高台县| 舒城县| 成都市| 侯马市| 塘沽区| 嘉兴市| 青州市| 永城市| 沾益县| 闸北区| 青川县| 吴桥县| 松江区| 遂川县| 定陶县| 贵港市| 东安县| 贵定县| 会东县| 海兴县| 昔阳县| 五寨县| 清水县| 梨树县| 平顺县| 陵川县| 定结县| 丁青县| 金阳县| 嘉黎县| 莲花县| 长子县| 开封市| 科技| 灵宝市| 昆山市| 绥阳县| 长子县| 安义县| 察雅县|