zoukankan      html  css  js  c++  java
  • pymysql

    一、简单操作以及格式

     1 import pymysql
     2 # 配置
     3 client=pymysql.connect(
     4     host='127.0.0.1',
     5     port=3306,
     6     user='root',
     7     password='0',
     8     database='db1',
     9     charset='utf8' # 中间没有-
    10 )
    11 # 游标
    12 cursor=client.cursor()
    13 # 拼接sql语句
    14 sql='insert into t(name) values("baobao")'
    15 try:
    16     # 执行sql语句
    17     res=cursor.execute(sql)
    18     print(res)
    19     client.commit()
    20 except Exception:
    21     # 捕捉到异常情况就回退至操作之前的数据
    22     client.rollback()
    23 # 退出游标
    24 cursor.close()
    25 # 回收系统资源
    26 client.close()

    2.简单从MySQL登录

    import pymysql
    while True:
        user=input('用户名:').strip()
        pwd=input('密码:').strip()
        client=pymysql.connect(
            host='127.0.0.1',
            user='root',
            password='0',
            database='db1',
            charset='utf8'
        )
        cursor=client.cursor()
        print(cursor)
        sql="select * from t where name='%s' and password='%s'"%(user,pwd)
        print(sql)
        # 返回行数
        rows=cursor.execute(sql)
        cursor.close()
        client.close()
        if rows:
            print('登录成功')
            break
        else:
            print('登录失败')

    登录结果:

    注意:在MySQL中 -- 是取消后面语句的意思

      不用输密码就可以登入:此时拼接的字符串是有问题的,若客户端输入的是 renren" -- asdf 直接回车则会直接登录成功,原因是 --取消掉了后面任何语句的含义。

      账号密码都不用输就登录:输入 renren" or 1<2 --asdf,其后边的1<2条件一直成立,这种情况下说明账户是正确的, -- 又取消了后边的所有输入语句,所以此时是不用账号密码可以直接登录了。

    import pymysql
    while True:
        user=input('用户名:').strip()
        pwd=input('密码:').strip()
        client=pymysql.connect(
            host='127.0.0.1',
            user='root',
            password='0',
            database='db1',
            charset='utf8'
        )
        cursor=client.cursor()
        print(cursor)
        sql="select * from t where name=%s and password=%s" # 后边不用传入参数了
        print(sql)
        # 返回的是在MySQL中看到的行数
        rows=cursor.execute(sql,(user,pwd)) # execute具有自动传参的功能
        print(rows)
        cursor.close()
        client.close()
        if rows:
            print('登录成功')
            break
        else:
            print('登录失败')
    解决 -- 破解的方式

    3.在pyMysql中对MySQL库中的表进行增、删、改

     1 import pymysql
     2 client=pymysql.connect(
     3     host='127.0.0.1',
     4     user='root',
     5     password='0',
     6     database='db1',
     7     charset='utf8'
     8 )
     9 #
    10 cursor=client.cursor()
    11 # sql="insert into t(name,password) values(%s,%s)"
    12 # rows=cursor.execute(sql,(('tianqian',123)))
    13 
    14 #
    15 # sql="delete from t where name=%s"
    16 # rows=cursor.execute(sql,[('tianqian')])
    17 #
    18 # # 改s
    19 sql="alter table t change name NAME varchar(15)"
    20 rows=cursor.execute(sql,)
    21 print(rows)
    22 
    23 # 表示客户端这边必须提交修改的数据,否则Mysql当中的数据并不会更新
    24 client.commit()
    25 
    26 cursor.close()
    27 client.close()

    4.查数据

     1 import pymysql
     2 client=pymysql.connect(
     3     host='127.0.0.1',
     4     user='root',
     5     password='0',
     6     database='db1',
     7     charset='utf8'
     8 )
     9 cursor=client.cursor()
    10 sql="select * from t"
    11 rows=cursor.execute(sql)
    12 # res1=cursor.fetchone() # 一条,取完之后返回None
    13 # res2=cursor.fetchone() # 一条
    14 # res3=cursor.fetchone() # 一条
    15 # res4=cursor.fetchone() # 一条
    16 # res5=cursor.fetchone() # 一条
    17 # res2=cursor.fetchmany(2) # 指定参数多少就是取几条,返回的是元组的形式
    18 # res3=cursor.fetchall() # 取出所有,返回的是元组的形式
    19 # print(res1)
    20 # print(res2)
    21 # print(res3)
    22 # print(res4)
    23 # print(res5)
    24 # print(res2)
    25 # print(res3)
    26 client.commit()
    27 
    28 cursor.close()
    29 client.close()

    5. 获取插入数据的最后一条自增ID

    import pymysql
    client=pymysql.connect(
        host='127.0.0.1',
        user='root',
        password='0',
        database='db1',
        charset='utf8'
    )
    cursor=client.cursor()
    sql="insert into t(NAME,password) values(%s,%s)"
    rows=cursor.execute(sql,(('douqi',123)))
    # 获取插入最后一条数据的自增ID
    print(cursor.lastrowid)  #13
    
    client.commit()
    
    cursor.close()
    client.close()
    自增ID的获取
  • 相关阅读:
    《java异常的一些总结》
    《java小应用程序(Applet)和java应用程序(Application)分别编写的简单计算器》
    《Java应用程序(Application)》
    CPU 内部 MOSFET 晶体管模型
    Intel 4004,世界上第一块 CPU
    VBScript
    VBScript
    Web Scraping(网页抓取)基本原理
    VBScript
    莎士比亚电路ヾ(≧▽≦*)o
  • 原文地址:https://www.cnblogs.com/Smart1san/p/9364398.html
Copyright © 2011-2022 走看看