python操作mysql数据库

python 复制代码
# 连接数据库
mysql -u root -p
#u是用户名 p需要用密码登录数据库

# 查看数据库
show database;

# 选择数据库
use database_name;

#查看数据库当中的table表
show tables;

#创建数据库
create database examination;

#删除数据库
drop table examination;
python 复制代码
#创建表
create TABLE house (
  id int(11) unsigned NOT NULL AUTO_INCREMENT,
  price decimal(10,2) DEFAULT NULL,
  unit varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL,
  area varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL,
  direction varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL,
  floor varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL,
  layout varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci

#查看表结构
desc house
#查看建表语句
show create table house
python 复制代码
# 创建表
create table class(
    id int(11) unsigned not null auto_increment,
    name varchar(80) not null,
    primary key(id)
);
create table exam(
    id int(11) unsigned not null auto_increment,
    name varchar(80) not null,
    primary key(id)
);
create table score(
    id int(11) unsigned not null auto_increment,
    student_id int(11) not null,
    subject_id int(11) not null,
    exam_id int(11) not null,
    score int(11) not null,
    primary key(id)
);
create table student(
    id int(11) unsigned not null auto_increment,
    class_id int(11) not null,
    sex char(10) not null,
    name varchar(80) not null,
    primary key(id)
);
create table subject(
    id int(11) unsigned not null auto_increment,
    name varchar(80) not null,
    primary key(id)
);

#插入数据
insert into class(name)
values('高二九班');

#修改数据
update class set name = '环境18-1'
where id = '3';

使用Python操作数据库

python 复制代码
import pymysql
python 复制代码
DATABASE = {
    'host':'127.0.0.1',
    'database':'examination',
    'user':'root',
    'password':'123qwe'
#     'charset':'utf8mb4'
}
#连接到数据库
# conn = pymysql.connect(host = '127.0.0.1',user = 'root',password = '123qwe', db = 'examination')
conn = pymysql.connect(**DATABASE)

查询操作

python 复制代码
#创建游标
cursor = conn.cursor()
#执行sql查询
sql = "select * from class;"
cursor.execute(sql)
#获取查询结果
results = cursor.fetchall()
#打印查询结果
for row in results:
    print(row)

插入操作

python 复制代码
#创建游标
cursor = conn.cursor()
#执行sql插入
sql = "insert into class(name) values('高一二十一班');"
cursor.execute(sql)
sql = "insert into class(name) values('信息18-2');"
cursor.execute(sql)
#提交sql插入语句
conn.commit()

查询操作

python 复制代码
#创建游标
cursor = conn.cursor()
#执行sql查询
sql = "select * from class;"
cursor.execute(sql)
#获取查询结果
results = cursor.fetchall()
#打印查询结果
for row in results:
    print(row)
复制代码
(1, '高二九班')
(2, '高三十七班')
(3, '环境18-1')
(4, '高一二十一班')
(5, '信息18-2')

更新操作

python 复制代码
#创建游标
cursor = conn.cursor()
#执行sql更新
sql = "update class set name = '初二十四班' where id = 4;"
cursor.execute(sql)
#提交sql更新语句
conn.commit()

查询操作

python 复制代码
#创建游标
cursor = conn.cursor()
#执行sql查询
sql = "select * from class;"
cursor.execute(sql)
#获取查询结果
results = cursor.fetchall()
#打印查询结果
for row in results:
    print(row)
复制代码
(1, '高二九班')
(2, '高三十七班')
(3, '环境18-1')
(4, '初二十四班')
(5, '信息18-2')

删除操作

python 复制代码
#创建游标
cursor = conn.cursor()
#执行sql删除
sql = "delete from class where id = 4;"
cursor.execute(sql)
#提交sql删除语句
conn.commit()

查询操作

python 复制代码
#创建游标
cursor = conn.cursor()
#执行sql查询
sql = "select * from class;"
cursor.execute(sql)
#获取查询结果
results = cursor.fetchall()
#打印查询结果
for row in results:
    print(row)
复制代码
(1, '高二九班')
(2, '高三十七班')
(3, '环境18-1')
(5, '信息18-2')

更新操作

python 复制代码
#创建游标
cursor = conn.cursor()
#执行sql更新
sql = "update class set name = '高一二十一班',id = 4 where id = 5;"
cursor.execute(sql)
#提交sql更新语句
conn.commit()

查询操作

python 复制代码
#创建游标
cursor = conn.cursor()
#执行sql查询
sql = "select * from class;"
cursor.execute(sql)
#获取查询结果
results = cursor.fetchall()
#打印查询结果
for row in results:
    print(row)
复制代码
(1, '高二九班')
(2, '高三十七班')
(3, '环境18-1')
(4, '高一二十一班')
python 复制代码
#关闭游标和连接
cursor.close()
conn.close()
python 复制代码
# 捕捉异常
try:
    a = 10
    b = a+'hello'
except TypeError as e:
    print(e)
复制代码
unsupported operand type(s) for +: 'int' and 'str'
python 复制代码
a = 10
b = a+'hello'
复制代码
---------------------------------------------------------------------------

TypeError                                 Traceback (most recent call last)

<ipython-input-71-00244769db33> in <module>
      1 a = 10
----> 2 b = a+'hello'


TypeError: unsupported operand type(s) for +: 'int' and 'str'
python 复制代码
#实现回滚操作(数据库操作回滚失败)
try:
    #执行sql查询
    sql = "insert into class(name) values('管科24-1');"
    #创建游标
    cursor = conn.cursor()
    #执行sql
    cursor.execute(sql)
    
    #do something
    error = 10 + 'hello'
    
    #提交sql插入语句
    conn.commit()
except Exception as e:
    print(e)
    conn.rollback()
相关推荐
wno7044 小时前
postgresSQL压缩版安装与基本命令
数据库·postgresql
张张123y4 小时前
后端第一课:输入 URL 后发生了什么?我用手写 Socket 把全链路跑通了
python·websocket·ai·socket·url·后端开发
聚美智数5 小时前
智能结构化识别-图片结构解析-图像结构化解析-照片结构化解析
android·java·数据库
瀚高PG实验室6 小时前
瀚高数据库常用系统表查询入门指南(附常用SQL)
数据库·sql·postgresql·瀚高数据库
全栈弄潮儿6 小时前
Python实战第7期:字典与集合
后端·python·编程语言
ben9518chen6 小时前
mysql数据库基本操作
数据库·mysql
2603_965148116 小时前
电商选品调研:通过关键词搜索API获取市场热销商品,结合商品详情API分析竞品卖点与定价
开发语言·数据库·人工智能·python·信息可视化
土豆.exe6 小时前
nf_tables 的 verdict 被读了两次:一个十年未闭合的位域错配
java·数据库·网络安全·缓存
xixiaoyunya7 小时前
Python 异步编程入门:用 asyncio 轻松实现并发任务
开发语言·python·php
缓慢更新7 小时前
表单引擎的存储建模:宽表与文档库的取舍
运维·服务器·网络·数据库·低代码·oracle·适配器模式