mysql数据库之pymsql模块
pymysql模块的工作原理是:把pycharm当成mysql客户端与mysqld服务端进行通信操作数据。
import pymysql #首先导入模块,先在命令行下载该模块pip3 install pymysql conn=pymysql.connect( host='127.0.0.1', #服务端ip地址 port=3306, #服务端端口 user='root', #登录用户名 password='123', #登录用户密码 database='db42', #指定操作的文件夹 charset='utf8' #指定字符编码,否者会出现乱码 ) cursor=conn.cursor(pymysql.cursors.DictCursor) #与服务端建立链接 # rows=cursor.execute('show tables;') rows=cursor.execute('select * from class;') #发送你要操作命令,coursor.execute等同于coursor.send,返回的是数据库内受影响的行数 print(rows) # print(cursor.fetchone()) #打印具体的数据 # print(cursor.fetchone()) # print(cursor.fetchmany(2)) #指定打印数据的条数 # print(cursor.fetchall()) #把结果都打印出来 # print(cursor.fetchall()) # print(cursor.fetchall()) # cursor.scroll(3,'absolute') # print(cursor.fetchone()) print(cursor.fetchone()) print(cursor.fetchone()) cursor.scroll(1,'relative') #移动游标,第一行 print(cursor.fetchone()) cursor.close() #断开链接 conn.close() #关闭客户端
防止sql注入问题:
在服务端防止sql注入问题:不要自己拼接字符串,让pymysql模块去拼接
import pymysql
conn=pymysql.connect(
host='127.0.0.1',
port=3306,
user='root',
password='123',
database='db42',
charset='utf8'
)
cursor=conn.cursor(pymysql.cursors.DictCursor)
inp_user=input('用户名>>:').strip() #inp_user=""
inp_pwd=input('密码>>:').strip() #inp_pwd=""
sql="select * from user where username=%s and password=%s" #不要自行拼接
print(sql)
rows=cursor.execute(sql,(inp_user,inp_pwd)) #交给mysqld服务端自己拼接,该模块有自己的拼接方法,可以晒出用户输入的特殊符号
if rows:
print('登录成功')
else:
print('登录失败')
cursor.close()
conn.close()
增删改:
import pymysql #pip3 install pymysql
conn=pymysql.connect(
host='127.0.0.1',
port=3306,
user='root',
password='123',
database='db42',
charset='utf8'
)
cursor=conn.cursor(pymysql.cursors.DictCursor)
# sql='insert into user(username,password) values(%s,%s)'
# rows=cursor.execute(sql,('EGON','123456')) #插入一条记录
# print(rows)
# print(cursor.lastrowid)
# rows=cursor.execute('update user set username="alexSB" where id=2')
# print(rows)
# 一次插入多行记录
sql='insert into user(username,password) values(%s,%s)'
rows=cursor.executemany(sql,[('lwz','123'),('evia','455'),('lsd','333')]) #插入多条记录用中括号以元组的形式,逗号分隔。
print(rows)
print(cursor.lastrowid)
conn.commit() # 只有commit提交才会完成真正的修改
cursor.close()
conn.close()