zoukankan      html  css  js  c++  java
  • python-49-pymysql使用

    前言

    我们在Python中操作数据库,相信很多小伙伴都是使用pymysql模块进行操作,小龙今天也简单记录一下学习操作增删改查。

    一、增:insert

    增删改中都需要提交事务:commit()

    insert into 表名(字段1,字段2,,字段x)values(字段1值,字段2值,字段x值);

    1、sql插入单条数据:execute()

    # 1、sql插入数据
    use = 'gsxl'
    pwd = '123456'
    import pymysql
    conn =pymysql.connect(
            host='127.0.0.1',
            port=3306,
            user='root',
            passwd='123456',
            db='dba')
    cursor = conn.cursor()
    sql = "insert into userinfo(user,password)values(%s,%s);"
    r = cursor.execute(sql,(use,pwd))
    conn.commit()               # commit:增、删、改都需要提交事务
    cursor.close()
    conn.close()
    print('受影响的行数:%s'%r)

    2、插入多行数据:executemany

    # 2、插入多行数据:executemany
    import pymysql
    conn =pymysql.connect(
            host='127.0.0.1',
            port=3306,
            user='root',
            passwd='123456',
            db='dba')
    cursor = conn.cursor()
    sql = "insert into userinfo(user,password)values(%s,%s);"
    r = cursor.executemany(sql,[('asd','123'),('das','456')])
    print('受影响的行数:%s'%r)     # 那返回值
    conn.commit()                   # commit:增、删、改都需要提交事务
    cursor.close()
    conn.close()

    3、拿自增ID:lastrowid

    use = 'gsxl'
    pwd = '123456'
    import pymysql
    conn =pymysql.connect(
            host='127.0.0.1',
            port=3306,
            user='root',
            passwd='123456',
            db='dba')
    cursor = conn.cursor()
    sql = "insert into userinfo(user,password)values(%s,%s);"
    cursor.execute(sql,(use,pwd))
    r = cursor.lastrowid
    print('自增ID:%s'%r)
    conn.commit()
    cursor.close()
    conn.close()
    终端打印结果:自增ID:31

    二、删:delete

    1、删除:delete,delete from 表名 where 字段='字段值';

    将 user=gsxl 的行删除。

    # 1、删除:delete
    import pymysql
    conn =pymysql.connect(
            host='127.0.0.1',
            port=3306,
            user='root',
            passwd='123456',
            db='dba')
    cursor = conn.cursor()
    sql = "delete from userinfo where user='gsxl';"
    r = cursor.execute(sql)
    print('受影响的行数:%s'%r)       # 拿返回值
    conn.commit()                   # commit:增、删、改都需要提交事务
    cursor.close()
    conn.close()

     

     三、改:update

     update 表名 set 要修改的字段=改为什么? where 约束字段条件='值';

    # 3、修改:update
    import pymysql
    conn =pymysql.connect(
            host='127.0.0.1',
            port=3306,
            user='root',
            passwd='123456',
            db='dba')
    cursor = conn.cursor()
    sql = "update userinfo set `password`='666' where `user`='gsxl';"
    r = cursor.execute(sql)
    print('受影响的行数:%s'%r)     # 拿返回值
    conn.commit()                   # commit:增、删、改都需要提交事务
    cursor.close()
    conn.close()

    四、查:select

    cursor 中 加这个参数能返回有字段名,列表嵌套字典:cursor=pymysql.cursors.DictCursor

    fetchone:只拿返回的一条数据,可连续拿数据。

    fetchall:拿全部的数据,常与 limit 进行分页使用。 

    1、查询 user='gsxl' 的数据:

    import pymysql
    conn =pymysql.connect(
            host='127.0.0.1',
            port=3306,
            user='root',
            passwd='123456',
            db='dba')
    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
    sql = "select * from userinfo where user=%s;"
    cursor.execute(sql,('gsxl'))
    # result = cursor.fetchone()          # 返回一条结果
    result = cursor.fetchall()            # 返回全部结果
    print(result)
    cursor.close()
    conn.close()
    终端打印结果:
    [{'id': 27, 'user': 'gsxl', 'password': '666'}, {'id': 28, 'user': 'gsxl', 'password': '666'}, {'id': 29, 'user': 'gsxl', 'password': '666'}]

    2、登录小例子:

    # 2、sql查询账号密码,登录例子
    import pymysql
    user=input('username:')
    pwd=input('password:')
    
    conn =pymysql.connect(
            host='127.0.0.1',
            port=3306,
            user='root',
            passwd='123456',
            db='dba')
    cursor = conn.cursor()
    sql = "select * from userinfo where user=%s and password=%s;"
    cursor.execute(sql,(user,pwd))       # (user,pwd):传%s里面的变量,防止sql注入
    result = cursor.fetchone()           # 返回一条结果
    # result = cursor.fetchall()         # 返回全部结果
    cursor.close()
    conn.close()
    if result:
        print('登录成功')
    else:
        print('登录失败')

    简单学习下pymysql的使用,总结:

    • 有连接就有关闭,游标操作;
    • 增删改必须要提交事务:commit();
    • 查询则是拿查询返回结果;

    欢迎来大家QQ交流群一起学习:482713805

  • 相关阅读:
    Docker容器启动时初始化Mysql数据库
    使用Buildpacks高效构建Docker镜像
    Mybatis 强大的结果集映射器resultMap
    Java 集合排序策略接口 Comparator
    Spring MVC 函数式编程进阶
    换一种方式编写 Spring MVC 接口
    【asp.net core 系列】6 实战之 一个项目的完整结构
    【asp.net core 系列】5 布局页和静态资源
    【asp.net core 系列】4. 更高更强的路由
    【Java Spring Cloud 实战之路】- 使用Nacos和网关中心的创建
  • 原文地址:https://www.cnblogs.com/gsxl/p/12630773.html
Copyright © 2011-2022 走看看