wangmiaolu

数据库的可视化工具和pymysql模块

一.数据库的可视化工具

navicate下载地址:https://pan.baidu.com/s/1bpo5mqj

掌握:
#1. 测试+链接数据库
#2. 新建库
#3. 新建表,新增字段+类型+约束
#4. 设计表:外键
#5. 新建查询
#6. 备份库/表

#注意:
批量加注释:ctrl+?键
批量去注释:ctrl+shift+?键

二.pymysql模块

#本质pymysql模块就是一个套接字客户端
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)#游标

# rows=cursor.execute(\'show tables;\')
rows=cursor.execute(\'select * from class;\')#这是游标执行sql语句
print(rows)

# print(cursor.fetchone())  #一次只查一行
# print(cursor.fetchmany(2))
# print(cursor.fetchall())
# print(cursor.fetchall())

#绝对
# print(cursor.fetchall())
# cursor.scroll(3,\'absolute\')#绝对移动 往后移动3条取到第四条
# print(cursor.fetchone())

#相对
print(cursor.fetchone())
print(cursor.fetchone())
cursor.scroll(1,\'relative\')#相对于当前的位置往后移动一条
print(cursor.fetchone())

cursor.close()
conn.close()

三.防止sql注入的问题

5.1什么是sql注入的问题

通过输入一堆特殊的字符串来改变sql语句的执行逻辑,从而改变程序的执行逻辑,绕过认证环节,直接登到后台
注意:--表示把sql语句后面的部分都注释掉了
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)


inp_user=input(\'用户名>>:\').strip() #inp_user=""
inp_pwd=input(\'密码>>:\').strip() #inp_pwd=""
sql="select * from user where username=\'%s\' and password=\'%s\'" %(inp_user,inp_pwd)
print(sql)


rows=cursor.execute(sql)
if rows:
    print(\'登录成功\')
else:
    print(\'登录失败\')

cursor.close()
conn.close()
sql注入相关代码

5.2sql注入的原理

无非是字符串的拼接操作

5.3为什么不让输特殊符号

因为特殊符号会改变sql语句的执行逻辑

5.4如何防止sql注入呢

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)

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))#这里用模块就可以
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()

 

分类:

技术点:

相关文章:

  • 2021-09-25
  • 2021-11-18
  • 2021-07-24
  • 2021-10-28
  • 2022-02-02
  • 2021-11-27
  • 2021-12-05
猜你喜欢
  • 2021-12-11
  • 2022-02-01
  • 2021-10-18
  • 2022-12-23
  • 2022-01-04
  • 2022-12-23
  • 2021-06-17
相关资源
相似解决方案