不想使用py自带的文件管理管理要链接到的相册链接(使用 txt 文件记录),决定使用数据库。

数据库管理系统(DBMS, Database Management System):一个软件,通过接受程序发送的指令使用封装好的程序对文件和文件夹进行处理。

数据库管理系统可以不配置在本地进行远程连接。

本次学习MYSQL数据库。

相册主题分类 python示例 python相册管理系统_数据库

  • 一些类比:

数据库——文件夹

表——EXCEL文件 

数据行——EXCEL中的数据行

  • 使用5.7.31版本

首先开启数据库(mysqld.exe)

可以手动开启,但是我将他制作成了一个名为mysql57的Windows服务,使用时在 cmd.exe 输入 net start mysql57 即可开启,输入 net stop mysql57 关闭。

连接数据库

可以使用 mysql.exe 测试能否正确连接到数据库。

调用方式:

路径\mysql.exe -h 127.0.0.1 -P 3306 -u root -p 密码

连接数据库后,可以查看现有的数据库:

show databases;

退出连接:

exit;

密码修改:

set password = password("密码");

数据库操作指令(使用 mysql.exe 连接):

创建数据库:

create database 数据库名 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

删除数据库:

drop databases 数据库名;

进入数据库:

use 数据库名;

查看数据库中的表:

show tables;

数据库操作指令(使用 python 连接):

需要 pymysql 库

首先 Python 连接 MySQL(底层实际上使用 socket):

conn = pymysql.connect(host="127.0.0.1", Port=3306, user="root", passwd="密码", charset="utf8") # 连接数据库
cursor = conn.cursor # 创建游标,使用此游标发送指令

查看数据库:

cursor.execute("show databases")

注意,Python 查询数据库操作后应该有接受查询返回的结果的代码:

result = cursor.fatchall()

Python 修改数据库后使用以下代码确认操作:

conn.commit()

数据表操作(mysql.exe):

进入数据库后,创建表结构:

create table 表名(
    列名 类型,
    列名 类型,
    列名 类型
)default charset=utf8;

每一列还可以设定是否允许为空,默认值,设定主键(主键的值不能为空也不能重复),自增列

  • 删除表 drop table 表名;
  • 清空表 delete from 表名; 或 truncate table 表名;(速度快、无法回滚撤销等)
  • 修改表
  • 添加列 alter table 表名 add 列名 类型; alter table 表名 add 列名 类型 DEFAULT 默认值; alter table 表名 add 列名 类型 not null default 默认值; alter table 表名 add 列名 类型 not null primary key auto_increment;
  • 删除列 alter table 表名 drop column 列名;
  • 修改列 类型 alter table 表名 modify column 列名 类型;
  • 修改列 类型 + 名称 alter table 表名 change 原列名 新列名 新类型; alter table tb change id nid int not null; alter table tb change id id int not null default 5; alter table tb change id id int not null primary key auto_increment; alter table tb change id id int; -- 允许为空,删除默认值,删除自增。
  • 修改列 默认值 ALTER TABLE 表名 ALTER 列名 SET DEFAULT 1000;
  • 删除列 默认值 ALTER TABLE 表名 ALTER 列名 DROP DEFAULT;
  • 添加主键 alter table 表名 add primary key(列名);
  • 删除主键 alter table 表名 drop primary key;

插入数据行

insert into L1(id,uid,zid) values(1,2,3);