1、Django内部提供ORM模块来连接数据库
代码 ------------------ > ORM----------->pymysql、MySQLdb、mysqlclient--------->数据库MySQL
model.xxx.all() ------> 翻译----------------> select * from xxxxx
2、所以需要安装mysqlclient
pip install mysqlclient
3、ORM可以帮我们做两件事:
①创建、修改、删除数据库中的表(不用写SQL语句,无法创建数据库)
②操作表中的数据(不用写SQL语句)
4、所以我们得先创建一个数据库(django_db)
5、Django连接MySQL。在mysite2/settings.py文件中找到DATABASE,进行下列修改。之后,Django会默认去连接本地的MySQL中的django_db数据库。
DATABASES = {
'default' : {
'ENGINE' : 'django.db.backends.mysql',
'NAME' : 'django_db',
'USER' : 'root',
'PASSWORD' : '123456',
'HOST' : '127.0.0.1',
'POST' : '3306',
}
}
6、Gjango操作表
①创建表
在app01/models.py文件中添加下列代
class UserInfo(models.Model):
name = models.CharField(max_length=45)
password = models.CharField(max_length=45)
age = models.IntegerField()
Gjango会根据下面的类,翻译成SQL语句,
到指定的数据库中创建一个 “app名_类名” 的表,并且还会自动添加一个主键列(自动增长)
creat table app01_userinfo(
id bigint auto_increment primary key,
name varchar(45),
password varchar(45),
age int
)
在终端上分别运行下列两行代码(app需要注册,否则无法创建)
python manage.py makemigrations
python manage.py migrate
运行结果:
运行结束后可以在MySQL 中查看结果
其它自动生成的表,都是Django默认注册的表
如果想新增,就直接添加类,然后再执行那两条命令,就可以自动创建新表了。
②修改表
如果想更改属性(列名),直接在models.py文件中修改其所在的类,修改完后再执行那两条命令就可以了。
如果表中已有数据,但还想修改属性(列名)。先直接修改models.py文件在的类,执行第一条命令时,Django会给出两个选择
选择第一个后,Django会让我们输入新增属性(列名)的值(整列都会变成输入的值),如下图所示:
如果选择第二个,Django程序会自动退出,意思时让我们在models.py文件中的类中对属性进行添加默认值。
例如:
age = models.IntegerField(default=2)
在括号里对两个参数进行赋值,则说明这个属性(列名)可以为空。这个时候如何新加列,就不需要给值了。
null = True , black = True
③删除表
只要把models.py文件中的对应的类删掉,再执行那两条命令,就可以了。