zoukankan      html  css  js  c++  java
  • PyMysql复习

    参考:http://www.cnblogs.com/liwenzhou/p/8032238.html

    使用pycharm操作数据库。

    填一个数据库名,User:填root

    填写要连接的数据库。

    建表。

    上传填写完的数据库。

    PyMysql操作数据库。

    import pymysql
    
    
    
    # 拿到用户输入的用户名密码
    
    # 去数据库里面判断用户名和密码是否正确
    # 1. 连接数据库
    conn = pymysql.connect(
        host="localhost",
        port=3306,  # 端口号是数字类型
        database="userinfo",  # 写自己本地的数据库名字
        user="root",
        password="1**3*8",
        charset="utf8"   # 千万记得没有-
    )
    
    cursor = conn.cursor()  # 获取输入SQL语句的 光标 对象
    sql = "select * from info;"
    ret = cursor.execute(sql)
    print(ret)
    # 关闭连接
    cursor.close()
    conn.close()

    结果:

    3
    
    Process finished with exit code 0

     SQL防注入

    import pymysql
    
    # 获取用户输入
    username = input("输入用户名:")
    pwd = input("请输入密码:")
    
    
    # 连接数据库检索有没有该用户
    conn = pymysql.connect(
        host="localhost",
        port=3306,
        database="userinfo",
        user="root",
        password="123456",
        charset="utf8"
    )
    
    cursor = conn.cursor()  # 获取光标
    # 拼接要执行的SQL语句
    sql = 'select * from info where username=%s and password=%s' #  %s 不再需要引号
    print(sql)
    print("=" * 120)
    # 执行SQL语句
    ret = cursor.execute(sql, [username, pwd])  # 让pymysql帮我们拼接SQL语句
    if ret:
        print("登录成功")
    else:
        print("登录失败!")
    # 关闭光标对像
    cursor.close()
    # 关闭连接
    conn.close()

     数据出错回滚操作:

     1 """
     2 pymysql增操作
     3 """
     4 
     5 import pymysql
     6 
     7 conn = pymysql.connect(
     8     host="localhost",
     9     port=3306,
    10     database="userinfo",
    11     user="root",
    12     password="1×××××",
    13     charset="utf8"
    14 )
    15 
    16 cursor = conn.cursor()#获取要执行的光标
    17 
    18 # 拼接语句
    19 sql = "insert into info (username, password)VALUES (%s, %s)"
    20 # 执行
    21 try:
    22     cursor.execute(sql, ["大旭",])
    23     # 自己写个for循环 (今天作业自己试下)
    24     conn.commit() #确认
    25 except Exception as e:
    26     print("报错啦:", str(e))
    27     conn.rollback()  # 错误回滚
    28 # 对数据库做写操作一定要记得提交assword
    29 
    30 cursor.close()
    31 conn.close()

    lastrowid(cid是获取的另一张表的id,使两个id对应)

    import pymysql
    
    conn = pymysql.connect(
        host="localhost",
        port=3306,
        database="userinfo",
        user="root",
        password="112358",
        charset="utf8"
    )
    
    cursor = conn.cursor()
    # 创建班级的sql语句
    sql1 = "insert into class (name) VALUES (%s)"
    # 创建学生的sql语句
    sql2 = "insert into student (name, cid) VALUES (%s, %s)"
    
    
    cursor.execute(sql1, "全栈9期")
    new_id = cursor.lastrowid  # 获取刚插入数据的ID值
    cursor.execute(sql2, ["小东北", new_id])
    conn.commit()
    
    cursor.close()
    conn.close()
     1 import pymysql
     2 
     3 conn = pymysql.connect(
     4     host="localhost",
     5     port=3306,
     6     database="userinfo",
     7     user="root",
     8     password="1*****",
     9     charset="utf8"
    10 )
    11 
    12 cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)  # 指定返回的数据格式为字典格式
    13 
    14 sql = "select * from info"
    15 
    16 cursor.execute(sql)  # 返回的不是具体的数据而是受影响的行数
    17 # ret = cursor.fetchall()  # 返回所有的数据
    18 # ret = cursor.fetchone()  # 返回第一条的数据
    19 # print(ret)
    20 # ret = cursor.fetchone()  # 返回一条的数据
    21 # print(ret)
    22 # ret = cursor.fetchone()  # 返回一条的数据
    23 # print(ret)
    24 # ret = cursor.fetchone()  # 返回一条的数据
    25 # print(ret)
    26 # ret = cursor.fetchone()  # 返回一条的数据
    27 # print(ret)
    28 # ret = cursor.fetchone()  # 返回一条的数据
    29 # print(ret)
    30 # ret = cursor.fetchone()  # 返回一条的数据
    31 # print(ret)
    32 
    33 ret = cursor.fetchmany(3)  # 查询具体多少条数据
    34 print(ret)
    35 # cursor.scroll(0, mode="absolute")  # 绝对移动,写多少就是移到多少
    36 
    37 cursor.scroll(-1, mode="relative") # 光标往前移一格
    38 ret = cursor.fetchall() #( -1 )这里的光标是从第3条后开始的
    39 print(ret)
    40 cursor.close()
    41 conn.close()

    结果:

    [{'username': '田径', 'password': 'abcde', 'id': 1}, {'username': '调高', 'password': 'cscsj', 'id': 2}, {'username': '篮球', 'password': 'haha', 'id': 3}]
    [{'username': '篮球', 'password': 'haha', 'id': 3}]
    
    Process finished with exit code 0
  • 相关阅读:
    游记 Day10
    游记 Day9
    NOIP模拟测试10
    【贪心】P3942 将军令 && P2279 消防局的设立
    在没有上考场之前,菜鸡也有翻盘的机会
    【数据结构】 圆方树&&广义圆方树
    快速幂&&龟速乘&&快速乘
    游记 Day 4
    【容斥】[ZJOI2016] 小星星
    游记 Day3
  • 原文地址:https://www.cnblogs.com/112358nizhipeng/p/10269160.html
Copyright © 2011-2022 走看看