一、环境

Windows  7 x64     python 3.7.1    pymysql 0.9.3  mysql5.6.43


二、pymysql的简单使用

1、准备数据库demo_temp

create database demo_temp;

2、连接数据库

import pymysql.cursors
connect = pymysql.connect(
host='127.0.0.1',
user='root',
password='',
db='demo_temp',
charset='utf8',
cursorclass=pymysql.cursors.DictCursor
)

3、创建表

import pymysql.cursors
# 连接数据库
connect = pymysql.connect(
host='127.0.0.1',
user='root',
password='',
db='demo_temp',
charset='utf8',
cursorclass=pymysql.cursors.DictCursor
)
# 创建表users
with connect.cursor() as cursor:
sql = """
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT ,
user CHAR(30),
passwd CHAR(20))
"""
cursor.execute(sql)
connect.close()

4、一个简单的增、删、改、查实例

import pymysql.cursors
# 连接数据库
connect = pymysql.connect(
host='127.0.0.1',
user='root',
password='',
db='demo_temp',
charset='utf8',
cursorclass=pymysql.cursors.DictCursor
) with connect.cursor() as cursor: # 创建游标
# 创建表
sql = """
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT ,
user CHAR(30),
passwd CHAR(20))
"""
cursor.execute(sql)
# 向表中插入数据
sql = """
INSERT INTO users (user,passwd) VALUES ('小明','123')
"""
cursor.execute(sql)
connect.commit() # 插入数据后必须更新 # 查询数据
sql = """
select * from users
"""
cursor.execute(sql)
ret = cursor.fetchone() # 提取查询数据
print(ret)
# 修改数据
sql = """
update users set user='葫芦娃' where id=1
"""
cursor.execute(sql) # 再次查询数据
sql = """
select * from users
"""
cursor.execute(sql)
ret = cursor.fetchone() # 提取查询数据
print(ret) connect.close() # 关闭数据库连接 # 打印内容如下
{'id': 1, 'user': '小明', 'passwd': ''}
{'id': 1, 'user': '葫芦娃', 'passwd': ''}

5、简单的事务

import pymysql.cursors

# 连接数据库
connect = pymysql.connect(
host='127.0.0.1',
user='root',
password='',
db='demo_temp',
charset='utf8',
cursorclass=pymysql.cursors.DictCursor
) try:
with connect.cursor() as cursor: # 创建游标
# 插入数据
sql = """
INSERT INTO users (user,passwd) VALUES ('11111','123')
"""
cursor.execute(sql)
# 更新数据
sql_1 = """
update users set user='葫芦娃' where id=1
"""
cursor.execute(sql_1)
raise NameError # 更新数据时主动抛出异常 except Exception as e:
connect.rollback() # 事务回滚
connect.commit() connect.close() # 关闭数据库连接

通过下面的小动画我们可以看出,这里模拟在更新数据时出现问题。而插入数据时没有问题的。然后执行事务回滚,最终数据没有被写入到数据库中。


三、Connection中常用API

1、open() :检测数据库是否连接。

connect.open:如果数据库连接返回Trhe,否则返回False。

2、ping(reconnect=True)

connect.ping(reconnect=True):如果reconnect=True表示连接断开后,重新进行连接。

import pymysql.cursors

# 连接数据库
connect = pymysql.connect(
host='127.0.0.1',
user='root',
password='',
db='demo_temp',
charset='utf8',
cursorclass=pymysql.cursors.DictCursor
)
print(connect.open) # 打印数据库连接状态
connect.close() # 关闭数据库连接
connect.ping(reconnect=True) # 重新连接数据库
print(connect.open) # 打印数据库连接状态

下面的小动画向我们展示了当connect断开连接后,使用connect.ping(reconnect=True)又重新连接到了数据库。

3、rollback():回滚当前事务,用法在上面,这里就不再演示了。

4、select_db(db):切换数据库。

# demo_test数据库中users表数据
mysql> select * from users;
+----+-----------+--------+
| id | user | passwd |
+----+-----------+--------+
| 1 | 小明 | 123 |
| 2 | 小刚 | 123 |
| 3 | 小红 | 123 |
| 4 | 葫芦娃 | 123 |
| 5 | 小明 | 123 |
+----+-----------+--------+ # demo_temp2库中test表中数据
mysql> select * from test;
+------+------+----------+
| id | user | password |
+------+------+----------+
| 1 | abc | 123 |
+------+------+----------+ import pymysql.cursors # 连接数据库
connect = pymysql.connect(
host='127.0.0.1',
user='root',
password='',
db='demo_temp',
charset='utf8',
cursorclass=pymysql.cursors.DictCursor
)
with connect.cursor() as cursor: # 创建游标 # 查询demo_temp中users表的数据
sql = """
select * from users
"""
cursor.execute(sql)
ret = cursor.fetchall() # 提取查询数据
print(ret)
print('-'*80)
# 切换到demo_temp2数据库,查询test表的数据
connect.select_db('demo_temp2')
sql = """
select * from test
"""
cursor.execute(sql)
ret = cursor.fetchall() # 提取查询数据
print(ret) connect.close() # 关闭数据库连接 # 打印结果
[{'id': 1, 'user': '小明', 'passwd': ''}, {'id': 2, 'user': '小刚', 'passwd': ''}, {'id': 3, 'user': '小红', 'passwd': ''},
{'id': 4, 'user': '葫芦娃', 'passwd': ''}, {'id': 5, 'user': '小明', 'passwd': ''}]
--------------------------------------------------------------------------------
[{'id': 1, 'user': 'abc', 'password': ''}]

5、cursor():创建游标对象,用于操作数据(增、删、改、查)。

6、commit():提交请求,当向数据库中插入数据时,需要使用commit()进行提交,否则数据将不能写入数据库。

7、close():关闭数据库连接。


四、Cursor常用API

1、cursor.execute(query, args=None):执行sql语句。

参数:

  • query (str):sql语句.
  • args (tuple, list or dict):sql语句中如果有变量,或者格式化输出,会在这里填充数据。

Returns:返回一个int值,表示sql语句影响到的行数。

下面演示插入数据的四种方式:

import pymysql.cursors

# 连接数据库
connect = pymysql.connect(
host='127.0.0.1',
user='root',
password='',
db='demo_temp',
charset='utf8',
cursorclass=pymysql.cursors.DictCursor
)
with connect.cursor() as cursor: # 创建游标 # 第一种方式向表中插入数据
sql = """
INSERT INTO users (user,passwd) VALUES ('123','123')
"""
cursor.execute(sql) # 第二种方式向表中插入数据
sql = """
INSERT INTO users (user,passwd) VALUES (%s,%s)
"""
cursor.execute(sql,['','']) # 第三种方式向表中插入数据
sql = """
INSERT INTO users (user,passwd) VALUES (%s,%s)
"""
cursor.execute(sql, ('', '')) # 第四种方式向表中插入数据
sql = """
INSERT INTO users (user,passwd) VALUES (%(a)s,%(b)s)
"""
cursor.execute(sql, {'a':'abc','b':''}) # 这里的'a'和'b'要和上面VALUES中对应
connect.commit() # 插入数据后必须更新
# 查询数据
sql = """
select * from users
"""
cursor.execute(sql)
ret = cursor.fetchall() # 提取查询数据
print(ret) connect.close() # 关闭数据库连接

2、cursor.executemany(query, args):可以执行多条sql语句。
参数:    
query :sql语句
args:可迭代对象
Returns:返回sql语句影响到的行数。

下面是方法实例:

import pymysql.cursors

# 连接数据库
connect = pymysql.connect(
host='127.0.0.1',
user='root',
password='',
db='demo_temp',
charset='utf8',
cursorclass=pymysql.cursors.DictCursor
)
with connect.cursor() as cursor: # 创建游标 # 插入多条数据
sql = """
INSERT INTO users (user,passwd) VALUES (%s,%s)
"""
ret_row = cursor.executemany(sql,[['a',''],['b',''],['c','']]) # 在args中传入一个可迭代对象。
connect.commit() # 插入数据后必须更新
print(f'当前受影响了{ret_row}行') # 查询数据
sql = """
select * from users
"""
cursor.execute(sql)
ret = cursor.fetchall() # 提取查询数据
print(ret) connect.close() # 关闭数据库连接

3、cursor.fetchone():从查询语句中获取一条查询结果。

4、cursor.fetchall():获取所有查询到的结果。

5、cursor.fetchmany(size):根据size获取相应的行数。

6、cursor.mogrify(query, args=None):返回执行的sql语句,下面是示例:

import pymysql.cursors

# 连接数据库
connect = pymysql.connect(
host='127.0.0.1',
user='root',
password='',
db='demo_temp',
charset='utf8',
cursorclass=pymysql.cursors.DictCursor
)
with connect.cursor() as cursor: # 创建游标
sql = """
select * from users
"""
cursor.execute(sql)
ret_sql = cursor.mogrify(sql) # 返回执行的sql语句
cursor.fetchmany(2) # 提取查询数据
print(ret_sql) connect.close() # 关闭数据库连接

7、cursor.close():关闭游标,关闭游标后,游标内所有数据将被清空。

参考文档:https://pymysql.readthedocs.io/en/latest/

pymysql 的简单使用的更多相关文章

  1. 对pymysql的简单封装

    #coding=utf-8 #!/usr/bin/python import pymysql class MYSQL: """ 对pymysql的简单封装 "& ...

  2. pymysql DAO简单封装

    #!/usr/bin/env python # -*-coding:utf-8 -*- # # 无法执行多个query,self.conn.close()放在CdbConn类的单独函数中,每次quer ...

  3. pymysql 模块简单使用

    目录 pymysql 模块简单使用 安装 pymysql 模块 使用 pymysql 连接数据库 并插入数据 使用pymysql 插入数据 修改查询显示结果 pymysql 模块简单使用 安装 pym ...

  4. python之pymysql模块简单应用

    众所周知,想要在python程序中执行SQL语句需要使用第三方模块:pymysql. 下面,我将为大家简述一下pymysql第三方库的安装到使用的大体流程. pymysql的安装 1.windows系 ...

  5. python_way day12 RabbitMQ ,pymysql

    python_way day12 1.RabbitMQ 2.pymysql RabbitMQ 1.基本用法 """ producer """ ...

  6. navicat 和 pymysql

    ---------------------------------------------------相信时间的力量,单每月经过努力的时间,一切的安排都是懊脑的安排. # # ------------ ...

  7. python框架---->pymysql的使用

    这里面学习一下python中操作mysql的第三方库pymysql的使用.很多我们以为一辈子都不会忘掉的事情,就在我们念念不忘的日子里.被我们遗忘了. pymysql的简单使用 我们创建一张表来进行下 ...

  8. python3与mysql交互:pymysql

    python3与mysql交互 1.安装pymysql模块 pip3 install pymysql3 2.pymysql的简单使用: # /usr/bin/env python3 import py ...

  9. python3与mysql交互

    1.安装pymysql模块 pip3 install pymysql3 2.pymysql的简单使用: # /usr/bin/env python3 import pymysql class Mysq ...

随机推荐

  1. Winform中设置ZedGraph的X轴的刻度根据曲线获取

    场景 Winforn中设置ZedGraph曲线图的属性.坐标轴属性.刻度属性: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10 ...

  2. Javase之多线程(2)

    多线程(2) 线程的生命周期 新建:创建线程对象 就绪:有执行资格,没有执行权 运行:有资格运行,有执行权 ​ 阻塞:由一些操作让线程处于改状态.没有执行资格,没有执行权,而通过另一些操作激活它,激活 ...

  3. laravel 之路由和MVC

    一.路由 Routes\; 1. 路由简介 简单的说就是将用户的请求转发给相应的程序进行处理. 作用就是建立url和程序之间的映射 请求类型get . post.put.patch.delete 2. ...

  4. emacs 设置emacs的外观

    设置emacs的外观 emacs的外观包括文本区的外观,辅助区的外观,状态行的外观,光标的外观等, 每个外观都有名字,并且都有下面属性: Font Family: 字体名字 Font Foundry: ...

  5. Nginx 配置高可用的集群

    1.什么是 nginx 高可用 (1)需要两台 nginx 服务器 (2)需要 keepalived (3)需要虚拟 ip 2.配置高可用的准备工作 (1)需要两台服务器 192.168.17.129 ...

  6. python详解json模块

    我们在做工作中经常会使用到json模块,今天就简单介绍下json模块 什么是json JSON ,全称为JavaScript Object Notation, 也就是JavaScript 对象标记,它 ...

  7. 使用DRF来快速实现API调用服务

    本帖最后由 范志远 于 2019-3-19 16:55 编辑 增加加载Djagno REST Framework模块的选项 对于settings.py文件的INSTALLED_APPS增加'rest_ ...

  8. 2、zabbix3.4的安装

    系统版本:centos7 数据库版本:mysql二进制安装5.7 zabbix:阿里云安装3.4 一.Zabbix的安装 Zabbix3.4版本官方安装手册链接:https://www.zabbix. ...

  9. LeetCode 动态规划

    动态规划:适用于子问题不是独立的情况,也就是各子问题包含子子问题,若用分治算法,则会做很多不必要的工作,重复的求解子问题,动态规划对每个子子问题,只求解一次将其结果保存在一张表中,从而避免重复计算. ...

  10. C++中的C

    前言 因为C++是以C为基础的,所以要用C++编程就必须熟悉C的语法. C语言的学习可以学习K & R C的<C程序设计语言> 创建函数 Q: 函数原型? A: 标准C/C++有一 ...