PyMysql

走远了吗. 提交于 2019-12-22 06:14:16

如何安装pymysql

1.为什么要安装?

    pymysql是用来连接python和mysql之间的通道,在使用python编程时,通过他来和mysql数据库进行交互
2.怎么安装?
    1.
        直接用pip安装,pip install pymysql
    2.
        去github上下载pymysql的安装包,
        https://github.com/PyMySQL/PyMySQL
        将安装包解压到自己某个盘符
        在linux下输入命令
        tar -zxvf pymysql-master.zip
        进入pymysql根目录下打开终端执行命令
        python setup.py install

pymysql 使用流程

1. 建立数据库连接(db = pymysql.connect(...))
2. 创建游标对象(cur = db.cursor())
3. 游标方法: cur.execute("insert ....")
4. 提交到数据库或者获取数据 : db.commit()/db.fetchall()
5. 关闭游标对象 :cur.close()
6. 断开数据库连接 :db.close()

常用函数

db = pymysql.connect(参数列表)
host :主机地址,本地 localhost
port :端口号,默认3306
user :用户名
password :密码
database :库
charset :编码方式,推荐使用 utf8
数据库连接对象(db)的方法
cur = db.cursor() 返回游标对象,用于执行具体SQL命令
db.commit() 提交到数据库执行
db.rollback() 回滚,用于当commit()出错是回复到原来的数据形态
db.close() 关闭连接
游标对象(cur)的方法
cur.execute(sql命令,[列表]) 执行SQL命令
cur.executemany(sql命令,[data]) 根据数据列表项多次执行SQL命令,一般用于写操作。
cur.fetchone() 获取查询结果集的第一条数据,查找到返回一个元组否则返回None
cur.fetchmany(n) 获取前n条查找到的记录,返回结果为元组嵌套元组, ((记录1),(记录2))。
cur.fetchall() 获取所有查找到的记录,返回结果形式同上。
cur.close() 关闭游标对象

读操作

这是我们已有的数据库

mysql> select * from c1;
+----+------+-----+------+-------+
| id | name | age | sex  | score |
+----+------+-----+------+-------+
|  2 | Yun  |  17 | m    |    97 |
|  3 | Tom  |  18 | m    |   110 |
|  4 | Emma |  19 | w    |    80 |
|  6 | Yun  |  20 | m    |    84 |
|  9 | Yun  |  20 | m    |     9 |
| 10 | Yun  |  21 | m    |    84 |
+----+------+-----+------+-------+

接下来我们用python来查看一下

import pymysql
# 连接数据库
db = pymysql.connect(host='localhost',
                     port=3306,
                     user='root',
                     password='123456',
                     database='stu',
                     charset='utf8')

# 生产游标对象 (操作数据库执行sql语句获取结果的对象)
cur = db.cursor()
sql = "select name,age from c1 where sex = 'm'"
cur.execute(sql)

print(cur.fetchall()) # 获取所有查询内容 返回结果:元祖套元祖
# 关闭游标和数据库
cur.close()
db.close()

写操作

mysql> select * from c1;
+----+------+-----+------+-------+
| id | name | age | sex  | score |
+----+------+-----+------+-------+
|  2 | Yun  |  17 | m    |    97 |
|  3 | Tom  |  18 | m    |   110 |
|  4 | Emma |  19 | w    |    80 |
|  6 | Yun  |  20 | m    |    84 |
|  9 | Yun  |  20 | m    |     9 |
| 10 | Yun  |  21 | m    |    84 |
+----+------+-----+------+-------+

这是已有的数据库,现在我们用python插入一条数据

import pymysql
# 连接数据库
db = pymysql.connect(host='localhost',
                     port=3306,
                     user='root',
                     password='123456',
                     database='stu',
                     charset='utf8')

# 生产游标对象 (操作数据库执行sql语句获取结果的对象)
cur = db.cursor()
try:
    sql = "insert into c1 values (11,'kitty',16,'m','100')"
    cur.execute(sql)
    db.commit() # 提交结果 立即刷新缓冲区
except:
    db.rollback() # 回滚
    # 关闭游标和数据库
cur.close()
db.close()

然后我们看一下数据库那边

mysql> select * from c1;
+----+-------+-----+------+-------+
| id | name  | age | sex  | score |
+----+-------+-----+------+-------+
|  2 | Yun   |  17 | m    |    97 |
|  3 | Tom   |  18 | m    |   110 |
|  4 | Emma  |  19 | w    |    80 |
|  6 | Yun   |  20 | m    |    84 |
|  9 | Yun   |  20 | m    |     9 |
| 10 | Yun   |  21 | m    |    84 |
| 11 | kitty |  16 | m    |   100 |
+----+-------+-----+------+-------+
这样数据就插入进来了.

写操作总结

"""
mysql.py
pymysql 数据库写操作
"""
import pymysql

# 连接数据库
db = pymysql.connect(host='localhost',
                     port=3306,
                     user='root',
                     password='123456',
                     database='stu',
                     charset='utf8')

# 生产游标对象 (操作数据库执行sql语句获取结果的对象)
cur = db.cursor()

# 利用游标对象执行写操作
# 写操作 --》 commit  rollback
try:
    # 插入操作
    # sql="insert into cls values (9,'Lily',17,'w','76');"
    # cur.execute(sql)
    # sql = "insert into cls values (%s,%s,%s,%s,%s);"
    # cur.execute(sql,[8,'Ala',18,'w',66])

    # 修改操作
    # sql = "update cls set score=84 where id=3;"
    # cur.execute(sql)

    # 删除操作
    # sql = "delete from cls where id=2;"
    # cur.execute(sql)

    # 通过executemany执行大量的sql语句
    list_ = [(17,1),(18,3),(19,4)]
    sql = "update cls set score=score-5,age=%s where id=%s;"
    # for i in list_:
    #     cur.execute(sql,[i]) 这两句相当于executemany这个函数的功能.
    cur.executemany(sql,list_)


    db.commit() # 提交结果 立即刷新缓冲区将数据写入数据库
except Exception as e:
    print(e)
    db.rollback() # 回滚 没有写入数据库的操作召回


# 关闭游标和数据库
cur.close()
db.close()


接下来做一个练习,输入一个人的名字,查看这个人的信息

import pymysql
# 连接数据库
db = pymysql.connect(host='localhost',
                     port=3306,
                     user='root',
                     password='123456',
                     database='stu',
                     charset='utf8')

# 生产游标对象 (操作数据库执行sql语句获取结果的对象)
cur = db.cursor()
name = input("Name:")
sql = "select name,age from c1 where name = '%s';"%name
cur.execute(sql)

print(cur.fetchall())  # 返回结果 元祖套元祖
# 关闭游标和数据库
cur.close()
db.close()
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!