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()