怎么在python中使用pymysql模块连接mysql数据库

56次阅读
没有评论

共计 4060 个字符,预计需要花费 11 分钟才能阅读完成。

自动写代码机器人,免费开通

本篇文章给大家分享的是有关怎么在 python 中使用 pymysql 模块连接 mysql 数据库,丸趣 TV 小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着丸趣 TV 小编一起来看看吧。

安装 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,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(连接已关闭)
 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.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)
 #  创建游标,操作设置为字典类型
 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 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 数据库,丸趣 TV 小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注丸趣 TV 行业资讯频道。

向 AI 问一下细节

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-12-04发表,共计4060字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)