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()
获取插入的最后一条数据的自增ID

 

以上是关于pymysql的主要内容,如果未能解决你的问题,请参考以下文章

运行 tkinter+pymysql 脚本时出现 pymysql.err.ProgrammingError

pymysql.err.InterfaceError: (0, '')解决办法

Python 与 MySQL 交互

Python 与 MySQL 交互

pymysql操作

pymysql使用