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. 14-n皇后

    /*题目内容: 国际象棋中的皇后可以沿着水平线,垂直线,或者斜线前进,吃掉遇到的所有棋子,如果棋盘上有八个皇后,则这八个皇后如何相安无事的放置在棋盘上,1970年与1971年, E.W.Dijkstr ...

  2. win下php的memcached的安装与使用

    1.memcache的php扩展与memcached服务器的区别? php要操作memcached就必须要安装memcache的扩展, 在http://windows.php.net/download ...

  3. python使用input()来接受字符串时一直报错“xxx is not defined”

    报错信息: “Please input your guess: gussTraceback (most recent call last):  File "coinGuessGame.py& ...

  4. 学美工、平面设计、UI设计,哪个有前途?

    首先,在分析学美工.平面设计.UI设计,哪一个更有前途的时候,先要对三类设计有一个大概的了解. 比如“学美工.平面设计.UI设计是什么”等知识,才能更好地去进行选择. 01 阐述美工.平面设计.UI设 ...

  5. winsock select 学习代码(1)

    // SelectCli.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <winsock2.h> #incl ...

  6. SqlServer和MySql允许脏读的实现方式,提高查询效率

    --Sql Server 允许脏读查询sqlselect * from category with(nolock) --MySql 允许脏读查询sql Mysql没有语法糖,需要原生的sqlSET S ...

  7. dwr 框架 ,实现 ajax 的java 框架

    1. 引入 dwr.jar 包 2. 配置web.xml 文件 ,拦截请求 <servlet> <servlet-name>dwr-invoker</servlet-na ...

  8. C语言dos程序源代码分享(进制转换器)

    今天给大家分享一个dos程序的源代码 这个程序是本人在学习中的经验分享 如果有问题或者建议,欢迎大家一起交流 源代码: /*本程序为一个进制转换器 本程序不作为商业用途,完全为技术交流 喜欢C语言的同 ...

  9. 使用reactjs做一个CRUD功能

    第一步:引入reactjs所依赖的js文件,本案例使用的是bootstrap前端框架,所以引入了相应的js和css文件 第二步:body里面添加两个div 第三步:开始编写reactjs脚本 < ...

  10. 2018.10.23 NOIP训练 Leo的组合数问题(组合数学+莫队)

    传送门 好题. 考察了莫队和组合数学两个知识板块. 首先需要推出单次已知n,mn,mn,m的答案的式子. 我们令f[i]f[i]f[i]表示当前最大值为第iii个数的方案数. 显然iii之后的数都是单 ...