国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

使用python連接mysql數據庫之pymysql模塊的使用

2020-01-18 20:43:02
字體:
來源:轉載
供稿:網友

安裝pymysql

pip install pymysql

2|0使用pymysql

2|1使用數據查詢語句

查詢一條數據fetchone()

from pymysql import *conn = connect(  host='127.0.0.1',  port=3306, user='root',  password='123456',  database='itcast',  charset='utf8')# 創建游標c = conn.cursor()# 執行sql語句c.execute("select * from student")# 查詢一行數據result = c.fetchone()print(result)# 關閉游標c.close()# 關閉數據庫連接conn.close()"""(1, '張三', 18, b'/x01')"""

查詢多條數據fetchall()

from pymysql import *conn = connect(  host='127.0.0.1',  port=3306, user='root',  password='123456',  database='itcast',  charset='utf8')# 創建游標c = conn.cursor()# 執行sql語句c.execute("select * from student")# 查詢多行數據result = c.fetchall()for item in result:  print(item)# 關閉游標c.close()# 關閉數據庫連接conn.close()"""(1, '張三', 18, b'/x01')(2, '李四', 19, b'/x00')(3, '王五', 20, b'/x01')"""

更改游標的默認設置,返回值為字典

from pymysql import *conn = connect(  host='127.0.0.1',  port=3306, user='root',  password='123456',  database='itcast',  charset='utf8')# 創建游標,操作設置為字典類型c = conn.cursor(cursors.DictCursor)# 執行sql語句c.execute("select * from student")# 查詢多行數據result = c.fetchall()for item in result:  print(item)# 關閉游標c.close()# 關閉數據庫連接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'}"""

返回一條數據時也是一樣的。返回字典或者時元組看個人需要。

2|2使用數據操作語句

執行增加、刪除、更新語句的操作其實是一樣的。只寫一個作為示范。

from pymysql import *conn = connect(  host='127.0.0.1',  port=3306, user='root',  password='123456',  database='itcast',  charset='utf8')# 創建游標c = conn.cursor()# 執行sql語句c.execute("insert into student(name,age,sex) values (%s,%s,%s)",("小二",28,1))# 提交事務conn.commit()# 關閉游標c.close()# 關閉數據庫連接conn.close()

和查詢語句不同的是必須使用commit()提交事務,否則操作就是無效的。

3|0編寫數據庫連接類

普通版

MysqlHelper.py

from pymysql import connect,cursorsclass 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("連接已關閉")    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,省去了數據庫連接的打開和關閉和游標的打開和關閉。
下面的代碼是調用該類的小示例:

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.pyfrom pymysql import connect, cursorsclass 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)    # 創建游標,操作設置為字典類型    self.cur = self.conn.cursor(cursor=cursors.DictCursor)  def __enter__(self):    # 返回游標    return self.cur  def __exit__(self, exc_type, exc_val, exc_tb):    # 提交數據庫并執行    self.conn.commit()    # 關閉游標    self.cur.close()    # 關閉數據庫連接    self.conn.close()

如何使用:

from mysql_with import DBwith DB() as db:  db.execute("select * from student")  ret = db.fetchone()  print(ret)"""{'id': 1, 'name': '張三', 'age': 18, 'sex': b'/x01'}"""

總結

以上所述是小編給大家介紹的使用python連接mysql數據庫之pymysql模塊的使用,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復大家的!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 舞钢市| 双江| 太康县| 乃东县| 大英县| 丰台区| 大名县| 密山市| 金乡县| 江达县| 厦门市| 筠连县| 大石桥市| 宽甸| 秦皇岛市| 崇左市| 教育| 贡觉县| 平和县| 盘锦市| 偃师市| 宜州市| 安岳县| 滨海县| 汉中市| 上杭县| 青神县| 镇沅| 财经| 广水市| 开江县| 社旗县| 涟源市| 衡山县| 仁怀市| 汉川市| 柘城县| 南木林县| 长汀县| 天门市| 揭阳市|