django学习入门系列之第九点《案例:员工管理》

文章目录

  • 案例:员工管理
    • 创建表结构
    • python 操作 MySQL
    • python查询数据
    • python删除数据
    • python修改数据
  • 小节
  • 往期回顾


案例:员工管理

  • 使用MySQL内置工具(命令)

    • 创建数据库:unicom
    • 数据一张表:admin
    表名: admin
    列:
    id,整型,自增,主键。
    username字符串 不为空,
    pasword 字符串不为空,
    mobile 字符串不为空
    
  • python代码实现:

    • 添加用户
    • 删除用户
    • 查看用户
    • 更新用户信息

创建表结构

create table admin(
id int not null auto_increment primary key,
username varchar(17) not null,
pasword varchar(12) not null,
mobile varchar(11) not null
)
default charset=utf8;
insert into unicom(username,pasword,mobile) values("123","234","345");

python 操作 MySQL

用python操作MySQL并发送指令

需要安装一个第三方的模块
pip install pymysql
  • 总体思路
    • 创建连接 ,创建游标(cursor),用游标execute执行sql语句,然后断开连接
import pymysql

# 连接数据 注意是utf8 而不是 utf-8(这样会报错)
# 千万不要用字符串格式化做SQL的拼接,会有安全隐患sql的注入
# 千万不要用字符串格式化做SQL的拼接,会有安全隐患sql的注入
# 千万不要用字符串格式化做SQL的拼接,会有安全隐患sql的注入
conn = pymysql.connect(host="127.0.0.1", port=3306, user='root', password="123", charset='utf8', db='unicom')
#创建一个发送指令的游标(重要)
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)

# 创建指令
cursor.execute("insert into admin(username,pasword,mobile) values('1wqe3','23wqe4','34asfd5')")
# 提交数据
conn.commit()

# 关闭
cursor.close()
conn.close()

最终在数据库中返回的结果

mysql> select * from admin;
+----+----------+---------+---------+
| id | username | pasword | mobile  |
+----+----------+---------+---------+
|  1 | 123      | 234     | 345     |
|  2 | 1wqe3    | 23wqe4  | 34asfd5 |
+----+----------+---------+---------+
2 rows in set (0.00 sec)

小知识点:sql注入

SQL注入(SQL Injection)是指攻击者通过在Web应用的用户输入参数中注入恶意的SQL语句,从而使Web应用执行这些恶意的SQL语句,进而导致数据库被攻击者非法获取或操作的一种安全漏洞。攻击者通过SQL注入漏洞,可以绕过Web应用程序的身份验证和授权机制,实现非法访问敏感数据、篡改或者删除数据等恶意操作。因此SQL注入被广泛认为是Web应用程序中最常见的漏洞类型之一。为避免SQL注入攻击,应该在编写Web应用程序时,对用户的输入进行严格的合法性检查,并对输入参数进行参数化处理,从而避免注入攻击。
  • 如果实在想要字符串拼接
  • 一定不要自己用字符串的拼接,而是要用execute中第二个参数进行传值
    • 方式1
import pymysql

conn = pymysql.connect(host="127.0.0.1", port=3306, user='root', password="123", charset='utf8', db='unicom')
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)

sql = "insert into admin(username,pasword,mobile) values(%s,%s,%s)"
cursor.execute(sql,["小明","qwe123","asdzxc"])

conn.commit()


cursor.close()
conn.close()

​ 方式2:

import pymysql

conn = pymysql.connect(host="127.0.0.1", port=3306, user='root', password="123", charset='utf8', db='unicom')
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)

sql = "insert into admin(username,pasword,mobile) values(%(n1)s,%(n2)s,%(n3)s)"
cursor.execute(sql, {"n1": "小明1", "n2": "qwe", "n3": "asc"})

conn.commit()

cursor.close()
conn.close()

简单案例:

import pymysql

user = input("请输入用户名")
pasword = input("请输入密码")
email = input("请输入邮箱")

conn = pymysql.connect(host="127.0.0.1", port=3306, user='root', password="123", charset='utf8', db='unicom')
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)

sql = "insert into admin(username,pasword,mobile) values(%(n1)s,%(n2)s,%(n3)s)"
cursor.execute(sql, {"n1": user, "n2": pasword, "n3": email})

conn.commit()

cursor.close()
conn.close()

python查询数据

  • 查询全部数据
import pymysql

conn = pymysql.connect(host="127.0.0.1", port=3306, user='root', password="123", charset='utf8', db='unicom')
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)

sql = "select * from admin"
cursor.execute(sql)

# 读数据,把所有的数据都拿到
data = cursor.fetchall()  #无数据的话,返回一个空列表
for i in data:
    #返回来的数据是字典样式
    print(i)

conn.commit()

cursor.close()
conn.close()

  • 查询一个数据
#只获取符合条件的第一条数据
import pymysql

conn = pymysql.connect(host="127.0.0.1", port=3306, user='root', password="123", charset='utf8', db='unicom')
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)

sql = "select * from admin"
cursor.execute(sql)
data = cursor.fetchone()   #无数据的话,返回一个NONE
print(data)

conn.commit()

cursor.close()
conn.close()

python删除数据

import pymysql

conn = pymysql.connect(host="127.0.0.1", port=3306, user='root', password="123", charset='utf8', db='unicom')
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)

sql = "delete from admin where id=%s"
cursor.execute(sql,[4, ])

sql = "select * from admin"
cursor.execute(sql)
data = cursor.fetchall()
for i in data:
    print(i)

conn.commit()

cursor.close()
conn.close()

python修改数据

import pymysql

conn = pymysql.connect(host="127.0.0.1", port=3306, user='root', password="123", charset='utf8', db='unicom')
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)

sql = "update admin set pasword='123' where id = %s"
cursor.execute(sql, [5, ])

sql = "select * from admin"
cursor.execute(sql)
data = cursor.fetchall()
for i in data:
    print(i)

conn.commit()

cursor.close()
conn.close()

小节

  • 在进行 新增、删除、修改时,一定要记住commit不然数据库没有数据
cursor.execute("....")
conn.commit()
  • 在查询时,不需要commit、而是需要执行fetchall/fetchone
cursor.execute("....")

# 第一条数据,字典, 无数据时时空列表
v1 = cursor.fetchall()

# 所有数据,字典, 无数据时None
v1 = cursor.fetchone()
  • SQL语句不要用pyhton的字符串拼接,要用本身自带的那种

往期回顾

1.【快速开发网站】
2.【浏览器能识别的标签1】
3.【浏览器能识别的标签2】
4.【浏览器能识别的标签3】
5.【浏览器能识别的标签4】
6.【案例1:用户注册】
7.【案例2:用户注册改进】
8.【快速了解 CSS】
9.【常用选择器概念讲解】
10.【CSS基础样式介绍1】
11.【CSS基础样式介绍2】
12.【CSS基础样式介绍3】
13.【CSS基础样式介绍3】
14.【案例 小米商城头标】
15.【案例 小米商城头标总结】
16.【案例 小米商城二级菜单】
17.【案例 商品推荐部分】
18.【伪类简单了解】
19.【position】
20.【案例 小米商城中app图标代码】
21.【边框及总结】
22.【BootSrap初了解】
23.【BootSrap的目录栏】
24.【BootSrap的栅格系统】
25.【案例 博客案例】
26.【案例 登录】
27.【案例 后台管理样例】
28.【图标】
29.【BootStrap依赖】
30.【javascript初了解】
31.【jJavaScript的变量】
32.【JavaScript的字符串类型】
33.【JavaScript的数组介绍】
34.【案例 动态数据】
35.【javascript 对象(字典)】
36.【案例 动态表格】
37.【Javascript的条件语句和函数】
38.【DOM初了解】
39.【DOM的事件了解】
40.【jQuery初了解】
41.【jQuery寻找标签】
42.【jQuery寻找标签2】
43.【jQuery寻找标签(间接寻找)】
44.【案例 菜单的切换】
45.【案例 只能打开一个菜单】
46.【jQuery 简单操作】
47.【案例 动态创建数据】
48.【案例 点击获取文本】
49.【案例 点击删除文本】
50.【案例 表格操作】
51.【案例 添加页面】
52.【初识MySQL】
53.【MySQL命令介绍一】
54.【MySQL命令介绍二】
55.【MySQL命令介绍三】

你可能感兴趣的:(django,django,学习,sqlite,python,后端,开源,笔记)