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. JSP的内置对象application、session、request、page的作用域

    1.application内置对象的类型名称为ServletContext. 2.session内置对象的类型名称为HttpSession. 3.application作用域:对应整个应用上下文. a ...

  2. 3.说一下你了解的弹性FLEX布局.

    页面布局一直都是web应用样式设计的重点 我们传统的布局方式都是基于盒模型的 利用display.position.float来布局有一定局限性 比如说实现自适应垂直居中 随着响应式布局的流行,CSS ...

  3. OSGi karaf-maven-plugin

    karaf-maven-plugin 1. 配制 karaf 启动时加载 bundle 项目中需要在 karaf 中集成 cxf-dosgi-discovery-distributed 特性,所以需要 ...

  4. php连接DB2

    在php.ini中添加对DB2的支持 //////////////////////////////////////////////////// ;;;;;;;;;;;;;;;;;;;;;; ; Dyn ...

  5. 2018.08.27 [Usaco2017 Jan]Promotion Counting(线段树合并)

    描述 The cows have once again tried to form a startup company, failing to remember from past experienc ...

  6. Java中BufferedReader和scanner

    Scanner 和BufferedReader同样能实现将键盘输入的数据送入程序, import java.io.*;import java.util.Scanner;public class C { ...

  7. java 路径、className.class.getResourceAsStream()、ClassLoader.getSystemResourceAsStream() 、FileInputStream

    className.class.getResourceAsStream 用法: 第一: 要加载的文件和.class文件在同一目录下,例如:com.x.y 下有类Test.class ,同时有资源文件c ...

  8. java梳理-序列化与反序列化

    一背景: 之前笔记关于rpc框架介绍中,提到为了调用远程服务,需要再确定消息结构后考虑序列化与反序列化,序列化主要是把对象转换成二进制码便于网络传输,反序列化就是相反的,主要目的是生成对象便于后续处理 ...

  9. bootstrap 问题

    less; sass: css预处理:可以直接使用.css,也可以修改.less,生成定制化的css CDN: 服务,使用这个效果会更好.theme一般不引入,jquery一般在js之前引入. 使用b ...

  10. 搜狗Q3业绩迅猛增长,战略整合稳步推进

        继9月16日腾讯与搜狗战略结盟之后,最近搜狗再次吸引了业界关注的目光,10月29日,搜狗公布了截至2013年9月30日的第三季度未经审计的财务报告.财报显示,新搜狗Q3营收达5700万美元,同 ...