• 创建数据库:unicom
  • 创建一张表:admin

    表名:admin 列: id,整型,自增,主键, username 字符串 不为空, password 字符串 不为空, mobile 字符串 不为空

  • python代码实现

    1. - 添加用户
    2. - 删除用户
    3. - 查看用户
    4. - 更新用户信息

    创建表结构

    CREATE DATABASE unicom DEFAULT CHARACTER SET utf8 COLLATE utf8_general;
    use unicom;
    create table admin (
    id int not null primary key auto_increment,
    name varchar(16) not null,
    password char(64) not null,
    mobile char(11) not null
    )default charset="utf8";

    Python操作MySQL

    创建数据库

    `import pymysql

1连接MySQL
conn=pymysql.connect(host=”127.0.0.1”,port=3306,user=’root’,password=”root”,charset=’utf8’,db=’unicom’)
#2.基于cursor发送指令
cursor=conn.cursor(cursor=pymysql.cursors.DictCursor)

3.发送指令
#3.1生成命令
#3.1.1原始静态插入
# cursor.execute(“insert into admin(username,password,mobile)values(‘xiaoli’,’7894560’,’13333333333’)”)

(千万不要用字符串格式化去做SQL的拼接,安全隐患SQL注入)!!!!
#3.1.2动态插入数据插入
# sql=”insert into admin(username,password,mobile)values (%s,%s,%s)”
# cursor.execute(sql,[“xiaoming”,”qwer”,”13344444444”])

3.1.3字典方式插入数据
sql=”insert into admin(username,password,mobile)values (%(n1)s,%(n2)s,%(n3)s)”
cursor.execute(sql,{“n1”: “济宁”,”n2”:”123456”,”n3”:”18888888888”})

3.2提交命令
conn.commit()

4.关闭连接
cursor.close()
conn.close()`

动态创建数据库

import pymysql

3.1.4动态创建数据
while True:
user = input(“用户名: “)
if user.upper()==’Q’:
break
pwd = input(“密码: “)
mobile = input(“手机号: “)
# 1连接MySQL
conn = pymysql.connect(host=”127.0.0.1”, port=3306, user=’root’, password=”root”, charset=’utf8’, db=’unicom’)
# 2.基于cursor发送指令
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
# 3.1.4动态创建数据
sql = “insert into admin(username,password,mobile)values (%s,%s,%s)”
cursor.execute(sql, [user, pwd, mobile])

# 3.2提交命令<br />    conn.commit()

# 4.关闭连接<br />    cursor.close()<br />    conn.close()

查询数据库

import pymysql
#1连接MySQL
conn=pymysql.connect(host=”127.0.0.1”,port=3306,user=’root’,password=”root”,charset=’utf8’,db=’unicom’)
#2.基于cursor发送指令
cursor=conn.cursor(cursor=pymysql.cursors.DictCursor)

2.执行查询命令(千万不要用字符串格式化去做拼接,安全隐患SQL注入)
cursor.execute(“select * from admin where id > %s”,[2,])

#2.1.1fetchall获取符合条件的所有数据(可以直接输出,逐行输出)[字典,字典] 空列表
# data_list = cursor.fetchall()

2.1.2 #fetchone获取符合条件的第一条数据。fetchall只可以搭配print来输出 字典 none
data_list = cursor.fetchone()

2.2.1直接输出
print(data_list)

2.2.2 #逐行输出
# for row_dict in data_list:
# print(row_dict)

3.关闭连接
cursor.close()
conn.close()

删除数据

import pymysql
#1连接MySQL
conn=pymysql.connect(host=”127.0.0.1”,port=3306,user=’root’,password=”root”,charset=’utf8’,db=’unicom’)
cursor=conn.cursor(cursor=pymysql.cursors.DictCursor)

2.执行查询命令(千万不要用字符串格式化去做拼接,安全隐患SQL注入)
cursor.execute(“delete from admin where id = %s”,[9,])
conn.commit()

3.关闭连接
cursor.close()
conn.close()

修改数据

import pymysql
#1连接MySQL
conn=pymysql.connect(host=”127.0.0.1”,port=3306,user=’root’,password=”root”,charset=’utf8’,db=’unicom’)
cursor=conn.cursor(cursor=pymysql.cursors.DictCursor)

2.执行查询命令(千万不要用字符串格式化去做拼接,安全隐患SQL注入)
cursor.execute(“update admin set mobile = %s where id = %s”,[16666666666,10])
conn.commit()

3.关闭连接
cursor.close()
conn.close()

强调

  • 在进行新增,删除,修改时,一定要记得commit。不然数据库没有数据。

    cursor.execute(“update admin set mobile = %s where id = %s”,[16666666666,10])
    conn.commit()

  • 在查询时,不需要commit,执行fetchall/fetchall.

    cursor.execute(“..”)

    第一条数据 字典 无数据是空列表

    v1=cursor.fetchone()

    所有的数据 列表里面套字典 None

    v2=cursot.fetchall()

  • 对于SQL语句不要用python的字符串格式化进行拼接(会被SQL注入),一定要用execute+参数

    cursor.execute(“…%s..%s”,[“x”,”x”])