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. 使用Linux之安装jdk 7

    工具/原料   jdk7源码安装压缩包 方法/步骤     卸载OpenJDK rpm -qa | grep java rpm -e --nodeps java-1.6.0-openjdk-1.6.0 ...

  2. apache中开启rewrite

    1.在apache配置文件httpd.conf中找到如下行: #LoadModule rewrite_module modules/mod_rewrite.so 去掉该行前面的#号 2.在httpd. ...

  3. Linux安装和配置Vim7.4

    一.简介 Vim是一个类似于Vi的文本编辑器,不过在Vi的基础上增加了很多新的特性,Vim普遍被推崇为类Vi编辑器中最好的一个,事实上真正的劲敌来自Emacs的不同变体.1999 年Emacs被选为L ...

  4. 转载 springboot 配置读取

    前言:了解过spring-Boot这个技术的,应该知道Spring-Boot的核心配置文件application.properties,当然也可以通过注解自定义配置文件**.properties的信息 ...

  5. ubuntu系统下安装pyspider:使用supervisord启动并管理pyspider进程配置及说明

    首先感谢segmentfault.com的“imperat0r_”用户的文章和新浪的“小菜一碟”用户的文章.这是他们的配置文件.我参考也写了一个,在最后呢. 重点说明写在前面.本人用superviso ...

  6. AngularJS标准Web业务流程开发框架—1.AngularJS模块以及启动分析

    前言: AngularJS中提到模块是自定义的模块标准,提到这不得不说AngularJS是框架中的老大哥,思想相当的前卫..在这框架满天横行的时代,AngularJS有些思想至今未被超越,当然仁者见仁 ...

  7. Eclipse技巧

    1 alt + / 提示 2 ctrl + shift + g 查找方法被谁调用 3 ctrl + t 查看某个类的继承关系 4 alt + 上/下 移动当前行上或者下 5 ctrl + / 行注释 ...

  8. ABP 基础设施层——集成 NHibernate

    本文翻译自ABP的官方教程<NHibernate Integration>,地址为:http://aspnetboilerplate.com/Pages/Documents/NHibern ...

  9. [LeetCode 题解]:Palindrome Number

    前言   [LeetCode 题解]系列传送门:  http://www.cnblogs.com/double-win/category/573499.html   1.题目描述 Determine ...

  10. openfire消息发送

    找了一些demo,做了一些示例,演示了基于xmpp协议的openfire的客户端之间消息的发送. 代码需要两个包,smack.jar ,smackx.jar. 第一个代码,只是点对点发送消息的,不涉及 ...