1

day 59 pymysql

  

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 = 3306,
    user = 'root',
    password ='123456',
    database ='day59',
    charset ='utf8'
)
cursor =conn.cursor()  获取一个光标
sql =' insert into userinfo (name,pwd) values (%s,%s);' 

name = 'wangzhen'
pwd = '123456'
cursor.execute(sql, [name,pwd])
conn.commit()
cursor.close()
conn.close()

 

 

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

 

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);"
name = "wangzhen3号"
pwd = "123456"
# 拼接并执行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=3306,  # 不是字符串类型(不要加引号)
    user="root",
    password="123456",
    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=3306,  # 不是字符串类型(不要加引号)
    user="root",
    password="123456",
    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 = "123456"

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()

 

 
posted @ 2018-04-26 12:14  萌哥-爱学习  阅读(169)  评论(0编辑  收藏  举报