使用python连接mysql数据库——pymysql模块的使用
安装pymysql
pip install pymysql
使用pymysql
使用数据查询语句
- 查询一条数据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'}
"""
返回一条数据时也是一样的。返回字典或者时元组看个人需要。
使用数据操作语句
执行增加、删除、更新语句的操作其实是一样的。只写一个作为示范。
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()提交事务,否则操作就是无效的。
编写数据库连接类
- 普通版
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连接mysql数据库——pymysql模块的使用的更多相关文章
- Python连接MySQL数据库(pymysql的使用)
本文Python版本3.5.3,mysq版本5.7.23 基本使用 # 导入pymysql模块 import pymysql #连接数据库 conn = pymysql.connect( databa ...
- python连接mysql之pymysql模块
以下demo均以python2中的mysqldb模块 一.插入数据 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 import MySQLdb conn = MyS ...
- pymysql模块使用---Python连接MySQL数据库
pymysql模块使用---Python连接MySQL数据库 浏览目录 pymysql介绍 连接数据库 execute( ) 之 sql 注入 增删改查操作 进阶用法 一.pymysql介绍 1.介绍 ...
- 第二百七十九节,MySQL数据库-pymysql模块操作数据库
MySQL数据库-pymysql模块操作数据库 pymysql模块是python操作数据库的一个模块 connect()创建数据库链接,参数是连接数据库需要的连接参数使用方式: 模块名称.connec ...
- Python连接MySQL数据库的多种方式
上篇文章分享了windows下载mysql5.7压缩包配置安装mysql 后续可以选择 ①在本地创建一个数据库,使用navicat工具导出远程测试服务器的数据库至本地,用于学习操作,且不影响测试服务器 ...
- python 连接Mysql数据库
1.下载http://dev.mysql.com/downloads/connector/python/ 由于Python安装的是3.4,所以需要下载下面的mysql-connector-python ...
- Python连接MySQL数据库之pymysql模块使用
安装PyMySQL pip install pymysql PyMySQL介绍 PyMySQL是在python3.x版本中用于连接MySQL服务器的一个库,2中则使用mysqldb. Django中也 ...
- Mysql(九):Python连接MySQL数据库之pymysql模块使用
Python3连接MySQL 本文介绍Python3连接MySQL的第三方库--PyMySQL的基本使用. PyMySQL介绍 PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服 ...
- pymysql用法,Python连接MySQL数据库
Pymysql模块是专门用来操作mysql数据库的模块,使用前需要安装,安装指令:pip install pymysql 操作流程: 第一步:import pymysql 第二步:获取数据库的连接 , ...
随机推荐
- python 编写排列组合
python在编写排列组合是会用到 itertools 模块 排列 import itertools mylist = list(itertools.permutations([)) # 全排列 p ...
- vuex中mutation和action的详细区别
const store = new Vuex.Store({ state: { count: 0 }, mutations: { increment (state) { state.count++ } ...
- Nginx之HTTP过滤模块
1. HTTP 过滤模块 ngx_http_not_modified_module 仅对 HTTP 头部做处理.在返回 200 成功时,根据请求中 If-Modified-Since 或者 If-Un ...
- Remote Ubuntu VM from Windows
Need to install the xrdp tool on Ubuntu. To do this, open a Terminal window (Ctrl + Alt + T) and ent ...
- 数据结构之双端队列(Deque)
1,双端队列定义 双端队列:其两端都可以入列和出列的数据结构,如下图所示,队列后面(rear)可以加入和移出数据,队列前面(front)可以加入和移出数据 双端队列操作: deque=Deque() ...
- Redis | Redis基础都不会,好意思出去面试?
Redis的数据结构 Redis支持多种不同的数据结构,包括5种基础数据结构和几种比较复杂的数据,这些数据结构可以满足不同的应用场景. 五种基础数据结构 String:字符串,是构建其他数据结构的基础 ...
- Kbengine游戏引擎-【4】demo-kbengine_unity3d_demo 在容器docker上安装测试
git地址:https://github.com/kbengine/kbengine_unity3d_demo Demo中文地址:https://github.com/kbengine/kbengin ...
- redis多实例与主从同步及高级特性(数据过期机制,持久化存储)
redis多实例 创建redis的存储目录 vim /usr/local/redis/conf/redis.conf #修改redis的配置文件 dir /data/redis/ #将存储路径配置修改 ...
- maven项目无法导入Oracle的jdbc连接jar包【我】
导入一个maven项目,启动一直报错 找不到Oracle的jdbc连接驱动Class, 用Eclipse导入 ojdbc14.jar 连接包,各种方法都无效,无法引入到部署后的lib目录中,可以直接放 ...
- nodejs语言实现验证码生成功能
验证码已经是非常常用的反作弊.反攻击手段了,其实要实现这个功能对技术水平好的人也不难,但是并不是每个人,每种语言都天然适合搞某个功能...不过我们可以通过封装接口,来屏蔽差异化,把问题简单化,现在就用 ...