笔记本📒

python-连接MySQL数据库

2021-02-04  本文已影响0人  涓涓自然卷
1、安装pymysql模块:

命令:终端输入-> pip3 install pymysql
验证:python进入窗口输入 -> import pymysql 不报错即可

2、pycharm中导入pymysq模块包:

import pymysql

3、创建连接对象:

connect()

4、获取游标对象:

连接对象.cursor()

5、pymysql完成数据的查询操作:

游标对象.execute()

6、关闭游标和连接

游标对象.close()
连接对象.close()

7、实例🌰:
# 导入pymysql包
import pymysql

# 创建连接对象
conn = pymysql.connect(host="10.5.1.117", port=3306, user="root", password="combanc", database="talent_directory",
                       charset="utf8")
# 获取游标对象
cs = conn.cursor()

# 增加数据:pycharm默认是开启事务的,此时客户端访问students表还是原来的数据,因此需要提交事务
sql = "insert into students(name) values('Lucy');"
cs.execute(sql)

# 删除数据
sql = "delete from students where id = 3;"
cs.execute(sql)

# 修改数据
sql = "update students set name='Lilo' where id=1;"
cs.execute(sql)

# pymysql完成数据的查询条件
sql = "select * from students;"
cs.execute(sql)

# for循环来显示数据
cs.execute(sql)
content = cs.fetchall()

for i in content:
    print(i)

# 提交操作
conn.commit()

# 关闭游标和连接
cs.close()
conn.close()

8、防止SQL注入:SQL语句参数化
# 导入pymysql包
import pymysql

# 创建连接对象
conn = pymysql.connect(host="10.5.1.117", port=3306, user="root", password="combanc", database="talent_directory",
                       charset="utf8")
# 获取游标对象
cs = conn.cursor()

# 不安全的方式
# 根据id查询学生信息,例如:' or 1 or'
find_name = input("请输入您要查询的学生姓名:")
sql = "select * from students where name = '%s'" % find_name

# 显示所有数据
cs.execute(sql)
content = cs.fetchall()
for i in content:
    print(i)

# 关闭游标和连接
cs.close()
conn.close()

运行以上代码,控制台输入:' or 1 or'字符串时,查询结果会将整个表数据全部查出来,而我们目的只是要按照where语句将姓名与输入条件一致的数据显示出来,因此这样会导致sql会被恶意注意的可能性,不安全。

执行结果:当控制台输入' or 1 or'时
不安全模式.png
image.png
# 导入pymysql包
import pymysql

# 创建连接对象
conn = pymysql.connect(host="10.5.1.117", port=3306, user="root", password="combanc", database="talent_directory",
                       charset="utf8")
# 获取游标对象
cs = conn.cursor()

# 安全的方式
find_name = input("请输入您要查询的学生姓名:")
sql = "select * from students where name = %s"

# 显示所有数据
cs.execute(sql, [find_name])
content = cs.fetchall()
for i in content:
    print(i)
# 关闭游标和连接
cs.close()
conn.close()

正确方式显示结果:当控制台同样输入' or 1 or'时
image.png 数据库表.png
上一篇下一篇

猜你喜欢

热点阅读