PyMySQL介绍

PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。

PYmysql安装

pip install pymysql

  

创建连接

# 导入pymysql模块
import pymysql
# 连接database
conn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”)
# 得到一个可以执行SQL语句的光标对象
cursor = conn.cursor()
# 定义要执行的SQL语句
sql = """
CREATE TABLE USER1 (
id INT auto_increment PRIMARY KEY ,
name CHAR(10) NOT NULL UNIQUE,
age TINYINT NOT NULL
)ENGINE=innodb DEFAULT CHARSET=utf8;
"""
# 执行SQL语句
cursor.execute(sql)
# 关闭光标对象
cursor.close()
# 关闭数据库连接
conn.close()
复制代码

  

返回字典格式数据:

# 导入pymysql模块
import pymysql
# 连接database
conn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”)
# 得到一个可以执行SQL语句并且将结果作为字典返回的游标
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
# 定义要执行的SQL语句
sql = """
CREATE TABLE USER1 (
id INT auto_increment PRIMARY KEY ,
name CHAR(10) NOT NULL UNIQUE,
age TINYINT NOT NULL
)ENGINE=innodb DEFAULT CHARSET=utf8;
"""
# 执行SQL语句
cursor.execute(sql)
# 关闭光标对象
cursor.close()
# 关闭数据库连接
conn.close()
复制代码

 

简单验证功能

import pymysql
name =input('请输入账号');
pwd =input('请输入密码')
conn =pymysql.connect(host ='127.0.0.1',port=3306, user = 'root',password ='123456',database ='day59')
cursor =conn.cursor() #获取一个光标,等等输入sql语句
sql ='select * from userinfo where name =%s and pwd =%s ;'
#帮我拼接字符串的sql语句,并且去数据库执行.
ret =cursor.execute(sql,[name,pwd])
#关闭
cursor.close()
conn.close()
if ret:
print('login successfully')
else:
print('login failed!')

  

注意 :

charset =‘utf8’ ,不要写成utf-8

 增删改查操作

 一、增加数据

1.1、通过python 为mysql添加多条数据 

import pymysql
conn = pymysql.connect(
host ='127.0.0.1',
port =3306, #不是字符串不需要加引号。
user ='root',
password ='123456',
database ='day59',
charset ='utf8'
)
#获取一个光标
cursor =conn.cursor() #定义要执行的sql语句
sql ='insert into userinfo(name,pwd) values(%s,%s);'
data =[
('高材生','woyouqian'),
('changjiang','huanghe'),
('zhanshen','jichuchapiqida')
]
#拼接并执行sql语句
cursor.executemany(sql,data)
#涉及写操作要注意提交
conn.commit()
#关闭连接
cursor.close()
conn.close()

 output result:

1.2、插入单条数据

import pymysql
conn =pymysql.connect(
host ='127.0.0.1',
port = ,
user = 'root',
password ='',
database ='day59',
charset ='utf8'
)
cursor =conn.cursor() 获取一个光标
sql =' insert into userinfo (name,pwd) values (%s,%s);' name = 'wangzhen'
pwd = ''
cursor.execute(sql, [name,pwd])
conn.commit()
cursor.close()
conn.close()

1.3 、获取最新插入数据 (最后一条)

import pymysql

# 建立连接
conn = pymysql.connect(
host="127.0.0.1",
port=, # 不是字符串类型(不要加引号)
user="root",
password="",
database="day59",
charset="utf8" # 没有-!!!!
)
# 获取一个光标
cursor = conn.cursor()
# 定义将要执行的SQL语句
sql = "insert into userinfo (name, pwd) values (%s, %s);"
name = "wangzhen3号"
pwd = ""
# 拼接并执行SQL语句
cursor.execute(sql, [name, pwd])
# 涉及写操作注意要提交
conn.commit()
# 关闭连接 # 获取最新的那一条数据的ID
last_id = cursor.lastrowid
print("最后一条数据的ID是:", last_id) cursor.close()
conn.close()

输出结果

二、删除操作

import pymysql

# 建立连接
conn = pymysql.connect(
host="127.0.0.1",
port=, # 不是字符串类型(不要加引号)
user="root",
password="",
database="day59",
charset="utf8" # 没有-!!!!
)
# 获取一个光标
cursor = conn.cursor()
# 定义将要执行的SQL语句
sql = "delete from userinfo where name=%s;"
name = "高材生"
# 拼接并执行SQL语句
cursor.execute(sql, [name])
# 涉及写操作注意要提交
conn.commit()
# 关闭连接 cursor.close()
conn.close()

三 、更改数据

"""
pymysql插入新数据
""" import pymysql # 建立连接
conn = pymysql.connect(
host="127.0.0.1",
port=3306, # 不是字符串类型(不要加引号)
user="root",
password="123456",
database="day59",
charset="utf8" # 没有-!!!!
)
# 获取一个光标
cursor = conn.cursor()
# 定义将要执行的SQL语句
sql = "update userinfo set pwd=%s where name=%s;"
# 拼接并执行SQL语句
cursor.execute(sql, ["woshixinmima", "alex"])
# 涉及写操作注意要提交
conn.commit()
# 关闭连接 cursor.close()
conn.close()

  

四、fetch数据(查询数据)

import pymysql
conn = pymysql.connect(
host ='127.0.0.1',
port =3306, #不是字符串不需要加引号。
user ='root',
password ='123456',
database ='day59',
charset ='utf8'
)
#获取一个光标
# cursor = conn.cursor()# 默认返回元组数据类型
cursor = conn.cursor(cursor =pymysql.cursors.DictCursor)#返回字典数据类型 #定义将要执行的sql语句
sql = 'select name,pwd from userinfo;'
#拼接并执行sql语句
cursor.execute(sql) #取到查询结果
ret1 =cursor.fetchone() #取一条
ret2 =cursor.fetchmany(3)# 取三条
ret3 =cursor.fetchone() #取一条 cursor.close()
conn.close() print(ret1)
print(ret2)
print(ret3)
# 可以获取指定数量的数据
cursor.fetchmany(3)
# 光标按绝对位置移动1
cursor.scroll(1, mode="absolute")
# 光标按照相对位置(当前位置)移动1
cursor.scroll(1, mode="relative")

  

  

输出结果:

 

 

 五、数据回滚

"""
pymysql插入新数据
""" import pymysql # 建立连接
conn = pymysql.connect(
host="127.0.0.1",
port=, # 不是字符串类型(不要加引号)
user="root",
password="",
database="day59",
charset="utf8" # 没有-!!!!
)
# 获取一个光标
cursor = conn.cursor()
# 定义将要执行的SQL语句
sql1 = "insert into userinfo (name, pwd) values (%s, %s);"
sql2 = "insert into book (name) values (%s);"
name = "wangzhen2号"
pwd = "" book_title = "Python从入门到放弃"
try:
# 拼接并执行SQL语句
cursor.execute(sql1, [name, pwd])
cursor.execute(sql2) # 报错的SQL语句 # 涉及写操作注意要提交
conn.commit()
except Exception as e:
print(str(e))
# 有异常就回滚
conn.rollback() # 关闭连接
cursor.close()
conn.close()
 

day 59 pymysql的更多相关文章

  1. Python之路-python(mysql介绍和安装、pymysql、ORM sqlachemy)

    本节内容 1.数据库介绍 2.mysql管理 3.mysql数据类型 4.常用mysql命令 创建数据库 外键 增删改查表 5.事务 6.索引 7.python 操作mysql 8.ORM sqlac ...

  2. PyMySQL Evaluation

    PyMySQL Evaluation This page will capture issues related to Openstack moving to the PyMySQL driver f ...

  3. 第一篇:杂项之pymysql连接池

    杂项之pymysql连接池   杂项之pymysql连接池 本节内容 本文的诞生 连接池及单例模式 多线程提升 协程提升 后记 1.本文的诞生 由于前几天接触了pymysql,在测试数据过程中,使用普 ...

  4. Python的数据库操作(pymysql)

    使用原生SQL语句进行对数据库操作,可完成数据库表的建立和删除,及数据表内容的增删改查操作等.其可操作性很强,如可以直接使用“show databases”.“show tables”等语句进行表格之 ...

  5. (九)random、os、time、datetime、hashlib、pymysql、excel、sys、string相关模块

    1.random模块 1 import random,string 2 print(string.printable) #代表所有的 数字+字母+特殊字符 3 4 print(random.randi ...

  6. 14.python与数据库之mysql:pymysql、sqlalchemy

    相关内容: 使用pymysql直接操作mysql 创建表 查看表 修改表 删除表 插入数据 查看数据 修改数据 删除数据 使用sqlmary操作mysql 创建表 查看表 修改表 删除表 插入数据 查 ...

  7. pymysql增删改查操作

    表结构 CREATE TABLE `students` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(20) DEFA ...

  8. Python全栈开发:pymysql

    本篇对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy pymsql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb ...

  9. 编写高质量代码:改善Java程序的151个建议(第4章:字符串___建议56~59)

    建议56:自由选择字符串拼接方法 对一个字符串拼接有三种方法:加号.concat方法及StringBuilder(或StringBuffer ,由于StringBuffer的方法与StringBuil ...

随机推荐

  1. 6-Qt给父widget加上styleSheet(添加背景图)而不改变子widget的styleSheet的方法

    Qt给父widget加上styleSheet(添加背景图)而不改变子widget的styleSheet的方法 比如用stylesheet给widget加背景图,可以用qt designer修改ui文件 ...

  2. php Pthread 多线程 (五) 线程同步

    有些时候我们不希望线程调用start()后就立刻执行,在处理完我们的业务逻辑后在需要的时候让线程执行. <?php class Sync extends Thread { private $na ...

  3. 分析maven的优点

    1.依赖管理: 就是对jar包的管理. 2.项目的一键构建: 编译--->测试--->运行--->打包--->安装 运行一个maven工程(web工程)只需要一个命令:toma ...

  4. UI交互设计教程分享:提高界面交互体验的“葵花宝典”

    ​本次分享的是在界面设计中最长实用也最容易被忽略的十个原则,就是尼尔森十大可用性设计原则,这是十分基础且重要的原则.原则是死的,如何正确的结合到实际运用中才是关键.接下来我会通过对每一个原则的理解和现 ...

  5. Jmeter通过BeanShell Sampler获取Jmeter的Bin路径,并存入变量供后面的脚本调用

    Jmeter的Bin路径是其运行路径,当把自动化测试的脚本放在Bin目录下时,为了将存储CSV的数据文件以及脚本的路径都设置成相对路径,我们需要获取到Jmeter的运行路径: 通过BeanShell ...

  6. Tree Representation Implementation & Traversal

    https://github.com/Premiumlab/Python-for-Algorithms--Data-Structures--and-Interviews/blob/master/Tre ...

  7. 2018.08.22 NOIP模拟 or(线段树)

    or [描述] 构造一个长度为 n 的非负整数序列 x,满足 m 个条件,第 i 个条件为x[li] | x[li+1] | - | x[ri]=pi. [输入] 第一行两个整数 n,m.接下来 m ...

  8. htoi的实现

    htoi的实现 /************************************************************************* > File Name: h ...

  9. 【Unity】1.1 安装Unity 5.3.4 开发环境

    分类:Unity.C#.VS2015 创建日期:2016-03-23 一.简介 Unity分个人版(Personal)和专业版(Pro).个人版是免费的(部分高级功能受限,但初学者也用不到它),Pro ...

  10. CIC仿真

    在调用CIC时发现的,明确告诉调用那些库. CIC的设置窗口. 该CIC滤波器有两个输入一个输出.与下面的相比,同样要输出两路信号,但输出速率要高. 修改成以下的设置 设置一个接口,两个通道. 该设置 ...