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的获取

 

posted @ 2018-07-25 10:13  Smart1san  阅读(177)  评论(0编辑  收藏  举报