pymysql
Posted 慕沁
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pymysql相关的知识,希望对你有一定的参考价值。
import pymysql user= input(‘用户名:>>‘).strip() pwd= input(‘密码:>>‘).strip() #先链接,拿到游标 conn=pymysql.connect(host=‘localhost‘,user=‘root‘,password=‘123456‘, database=‘day47‘,charset=‘utf8‘) cursor=conn.cursor() #拿到游标,即mysql > #执行sql sql=‘select * from user where user="%s" and password="%s";‘%(user,pwd) print(sql) #注意%s需要加双引号 rows = cursor.execute(sql) #拿到受影响的行数 cursor.close() conn.close() if rows: print(‘登录成功‘) else: print(‘登录失败‘)
1、防注入
如上我们采用字符串拼接的形式生成sql语句。但是当存在 -- 时有可能对后面的语句形成干扰。
当面临这种情况时,用execute做字符串拼接
import pymysql user="egon1" pwd= 123 #先链接,拿到游标 conn=pymysql.connect(host=‘localhost‘,user=‘root‘,password=‘1234‘,
database=‘ls‘,charset=‘utf8‘) cursor=conn.cursor() #拿到游标,即mysql > sql="select * from std where name=%s and password=%s;" row_count=cursor.execute(sql,[user,pwd]) print(row_count) conn.commit() cursor.close() conn.close() ..............其中()【】都可以使用
- 增
- 删
- 改
- 查
- 与sql语句基本一致
当我查找数据时,会返回很多内容,我们需要通过fetchone,fetchmany,fetchall来获得消息
import pymysql user="egon16" pwd= 123 #先链接,拿到游标 conn=pymysql.connect(host=‘localhost‘,user=‘root‘,password=‘1234‘, database=‘ls‘,charset=‘utf8‘) cursor=conn.cursor() sql=‘select * from stu;‘ rows = cursor.execute(sql) #查单条fetchone # res1=cursor.fetchone() # res2=cursor.fetchone() # res3=cursor.fetchone() # print(res1) # print(res2) # print(res3) # print(res3[0]) #查多条fetchmany # print(cursor.fetchmany(3)) # print(cursor.fetchone()) #查所有fetchall # print(cursor.fetchall()) # print(cursor.fetchone()) #-------光标的移动-------- #1.绝对路径:从文件的开头位置算起 # print(cursor.fetchall()) # cursor.scroll(1,mode=‘absolute‘) # print(cursor.fetchone()) # cursor.scroll(3,mode=‘absolute‘) # print(cursor.fetchone()) #2.相对路径: print(cursor.fetchone()) print(cursor.fetchone()) cursor.scroll(2,mode=‘relative‘) #相对于上面的两条向后移两条 print(cursor.fetchone()) print(‘%s row in set (0.00 sec)‘ %rows) cursor.close() conn.close()
------查看表中最后一行的iD import pymysql conn=pymysql.connect(host=‘localhost‘,user=‘root‘,password=‘123456‘, database=‘day47‘,charset=‘utf8‘) cursor=conn.cursor() sql=‘insert into user1(user,password) values(%s,%s);‘ rows=cursor.execute(sql,(‘alex‘,‘123‘)) # rows=cursor.executemany(sql,[(‘yuanhao‘,‘123‘),(‘laowu‘,‘123‘),(‘kgf‘,‘12323‘)]) conn.commit() print(cursor.lastrowid) #查看表中最后一行的iD cursor.close() conn.close()
以上是关于pymysql的主要内容,如果未能解决你的问题,请参考以下文章
运行 tkinter+pymysql 脚本时出现 pymysql.err.ProgrammingError