这是我所操作的表的数据
mysql> create table X(
-> name varchar(30),
-> age int);
Query OK, 0 rows affected (0.02 sec)
mysql> insert into X values('小华',18),('李四',16),('王五',20);
Query OK, 3 rows affected (0.00 sec)
mysql> select * from X;
+------+------+
| name | age |
+------+------+
| 小华 | 18 |
| 李四 | 16 |
| 王五 | 20 |
+------+------+
3 rows in set (0.00 sec
下面是使用python对MySQL进行增删改查
其实也就那sql语句在变,其他都差不多
增:
import pymysql
con = pymysql.connect(host='localhost',user='root',password='填你的MySQL的密码',port=填你MySQL的端口号(默认是3306,注意填的是数字),database='填你要操作的数据库的名字',charset='utf8')# charset默认是utf8mb4,不修改也可以
try:
with con.cursor() as cur:
# 插入一条数据
sql = 'insert into X values("小美",18)'
result = cur.execute(sql)# 执行sql语句
# 插入成功会返回1
if result:
print('添加成功')
# 插入多条数据,使用循环就好了
con.commit()# 不提交是不会保存你的操作的
except Exception as e:
print(e)
print('添加失败')
con.rollback()# 回退
finally:
con.close()
执行上述代码之后再对X表进行查询
mysql> select * from X;
+------+------+
| name | age |
+------+------+
| 小华 | 18 |
| 李四 | 16 |
| 王五 | 20 |
| 小美 | 18 |
+------+------+
4 rows in set (0.00 sec)
删:
import pymysql
con = pymysql.connect(host='localhost',user='root',password='填你的MySQL的密码',port=填你MySQL的端口号(默认是3306,注意填的是数字),database='填你要操作的数据库的名字',charset='utf8')# charset默认是utf8mb4,不修改也可以
try:
with con.cursor() as cur:
sql = 'delete from X where name="小美"'
result = cur.execute(sql)
if result:
print('删除成功')
con.commit()
except Exception as e:
print(e)
print('删除失败')
con.rollback()
finally:
con.close()
mysql> select * from X;
+------+------+
| name | age |
+------+------+
| 小华 | 18 |
| 李四 | 16 |
| 王五 | 20 |
+------+------+
3 rows in set (0.00 sec)
改:
import pymysql
con = pymysql.connect(host='localhost',user='root',password='填你的MySQL的密码',port=填你MySQL的端口号(默认是3306,注意填的是数字),database='填你要操作的数据库的名字',charset='utf8')# charset默认是utf8mb4,不修改也可以
try:
with con.cursor() as cur:
sql = 'update X set name="张三" where name="小华"'
result = cur.execute(sql)
if result:
print('修改成功')
con.commit()
except Exception as e:
print(e)
print('修改失败')
con.rollback()
finally:
con.close()
mysql> select * from X;
+------+------+
| name | age |
+------+------+
| 张三 | 18 |
| 李四 | 16 |
| 王五 | 20 |
+------+------+
3 rows in set (0.00 sec)
查
import pymysql
con = pymysql.connect(host='localhost',user='root',password='填你的MySQL的密码',port=填你MySQL的端口号(默认是3306,注意填的是数字),database='填你要操作的数据库的名字',charset='utf8')# charset默认是utf8mb4,不修改也可以
try:
with con.cursor() as cur:
sql = 'select * from X'
cur.execute(sql)
# print(cur.fetchone())# ('张三', 18)
# print(cur.fetchone())# ('李四', 16)
# print(cur.fetchone())# ('王五', 20)
# 获取全部
# print(cur.fetchall())# (('张三', 18), ('李四', 16), ('王五', 20))
# 获取多条
# 不给参数默认是获取第一条
print(cur.fetchmany(2))# (('张三', 18), ('李四', 16))
except Exception as e:
print(e)
print('查询失败')
finally:
con.close()
注意:查询不需要进行提交,没对表格进行改变
给cursor不同的参数,查询到的结果就不同,不过我们一般不去添加参数
import pymysql
from pymysql.cursors import DictCursor
con = pymysql.connect(host='localhost',user='root',password='填你的MySQL的密码',port=填你MySQL的端口号(默认是3306,注意填的是数字),database='填你要操作的数据库的名字',charset='utf8')# charset默认是utf8mb4,不修改也可以
try:
with con.cursor(DictCursor) as cur:
sql = 'select * from X'
cur.execute(sql)
print(cur.fetchall())# [{'name': '张三', 'age': 18}, {'name': '李四', 'age': 16}, {'name': '王五', 'age': 20}]
except Exception as e:
print(e)
print('查询失败')
finally:
con.close()