ORM

全称:Object Relational Mapping

中文:对象关系映射

描述:通过把表映射成类,把行作实例,把字段作为属性,实际在执行对象操作的时候最终还是会把对应的操作转换为数据库原生语句。

我们知道数据库的表在程序中就是一个对象,那么如何将这个对象与表对应起来?

1
2
3
4
5
6
class ModelBase(type):
def __new__(cls, name, bases, attrs, **kwargs):
super_new = super().__new__
new_attrs = {'__module__': module}
new_class = super_new(cls, name, bases, new_attrs, **kwargs)
return new_class
1
2
3
4
class Model(metaclass=ModelBase):
def __init__(self, *args, **kwargs):
cls = self.__class__
opts = self._meta

获取值

1
User.object.get(username='qaz')

MySQL

初始化配置

配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[client]
# 设置mysql客户端默认字符集
default-character-set=utf8

[mysqld]
# 设置3306端口
port = 3306
# 设置mysql的安装目录
basedir=C:\\web\\mysql-8.0.11
# 设置 mysql数据库的数据的存放目录,MySQL 8+ 不需要以下配置,系统自己生成即可,否则有可能报错
# datadir=C:\\web\\sqldata
# 允许最大连接数
max_connections=20
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB

配置环境变量

1
set path=%path%;C:\web\mysql-8.0.11\bin\

初始化数据库

1
mysqld --initialize --console

最后会有一个root用户以及该用户的初始密码,即root@localhost: S0oeriNoCi;4

安装MySQL服务

1
mysqld install

启动MySQL服务

1
net start mysql

登入MySQL

1
2
mysql -h 127.0.0.1 -u root -p
S0oeriNoCi;4 # 输入你 root 初始密码 (有时间限制)

修改密码

1
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';

关闭MySQL服务

1
mysqladmin -uroot shutdown