zoukankan      html  css  js  c++  java
  • python操作MySQL

    pymysql模块的安装

    pip3 install pymysql

    python连接数据库

    import pymysql
    
    # 连接参数
    conn = pymysql.connect(
        host='localhost',
        port=3306,
        user='cwz',
        password='123',
        database='work',
        charset='utf8'
    )
    
    cursor = conn.cursor()   # 执行结果默认以元组形式返回
    
    sql = 'select * from t1'  # 执行的sql语句
    
    cursor.execute(sql)   # 执行sql语句
    res = cursor.fetchall()  # 取出所有数据
    
    print(res)
    
    cursor.close()
    conn.close()
    

    pymysql的参数

    import pymysql
    
    # 连接参数
    conn = pymysql.connect(
        host='localhost',
        port=3306,
        user='cwz',
        password='123',
        database='work',
        charset='utf8'
    )
    
    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)   # 执行结果以列表套字典的方式返回
    
    sql = 'select * from t1'  # 执行的sql语句
    
    cursor.execute(sql)   # 执行sql语句
    # res = cursor.fetchall()  # 取出所有数据
    # res = cursor.fetchone()  # 取出一条数据,以字典形式返回
    res = cursor.fetchmany(2)  # 取出指定条数据 以列表套字典的方式返回
    
    print(res)
    
    cursor.close()
    conn.close()
    

    sql注入问题

    模拟登录

    import pymysql
    
    user = input('请输入用户名:').strip()
    pwd = input('请输入密码:').strip()
    
    conn = pymysql.connect(
        host='localhost',
        port=3306,
        user='cwz',
        password='123',
        database='work',
        charset='utf8'
    )
    
    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
    
    sql = f'select * from t1 where name="{user}" and password="{pwd}"'
    
    cursor.execute(sql)
    res = cursor.fetchall()
    print(res)
    
    cursor.close()
    conn.close()
    
    if res:
        print('登录成功')
    
    else:
        print('登录失败')
    

    execute()之sql注入问题

    解决方法

    import pymysql
    
    user = input('请输入用户名:').strip()
    pwd = input('请输入密码:').strip()
    
    conn = pymysql.connect(
        host='localhost',
        port=3306,
        user='cwz',
        password='123',
        database='work',
        charset='utf8'
    )
    
    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
    
    sql = 'select * from t1 where name=%s and password=%s'
    cursor.execute(sql, ('aa', '123'))
    
    res = cursor.fetchall()
    print(res)
    
    if res:
        print('登录成功')
    
    else:
        print('登录失败')
    
    cursor.close()
    conn.close()
    

    操作MySQL数据库

    增加数据

    import pymysql
    
    conn = pymysql.connect(
        host='localhost',
        port=3306,
        user='cwz',
        password='123',
        database='work',
        charset='utf8'
    )
    
    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
    
    sql = 'insert into t1 (name,password) values (%s,%s)'
    
    cursor.executemany(sql,(('a2','123'),('a3','123'))) # executemany插入多条数据
    print(cursor.lastrowid)   # 获取最后一行id值
    
    conn.commit()  # 一定要有这一步,否则就不能修改
    
    cursor.close()
    conn.close()
    

    修改数据

    import pymysql
    
    conn = pymysql.connect(
        host='localhost',
        port=3306,
        user='cwz',
        password='123',
        database='work',
        charset='utf8'
    )
    
    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
    
    sql = 'update t1 set name=%s where id=%s'
    
    cursor.execute(sql,('qwe123',2))
    
    
    conn.commit()  # 一定要有这一步,否则就不能修改
    
    cursor.close()
    conn.close()
    

    删除数据

    import pymysql
    
    conn = pymysql.connect(
        host='localhost',
        port=3306,
        user='cwz',
        password='123',
        database='work',
        charset='utf8'
    )
    
    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
    
    sql = 'delete from t1 where id=%s'
    
    cursor.execute(sql,(3,))
    
    
    conn.commit()  # 一定要有这一步,否则就不能修改
    
    cursor.close()
    conn.close()
    
  • 相关阅读:
    Richardson成熟度模型:关于REST的不同风格
    领域驱动设计
    dubbo初探
    pom使用异常问题
    [转]解决BootStrap validator验证的图标错位问题
    万恶的360浏览器
    利用Barcode4j实现输出ean13条形码到文件、流的工具类
    使用hibernate中的hql进行分页设置setMaxResults(int a)出错,索引1越界,hql执行不了等等问题
    Mysql 5.6以上版本zip安装方法
    Hibernate5生成的映射文件导致findByExample无法正确查询到结果
  • 原文地址:https://www.cnblogs.com/setcreed/p/11774139.html
Copyright © 2011-2022 走看看