本文已参与「新人创作礼」活动,一起开启掘金创作之路。
首先确定Python Django的环境已经配置好,参考juejin.cn/post/708566…
本文主要是进行一个测试,了解数据库配置的基本过程,后续会再创建项目相关的数据库。
- 打开virtualBox虚拟机,进入终端,输入命令mysql -u admin -p,然后输入用户密码,进入到mysql数据库。
- 输入命令show databases; 查看当前数据库。注意在数据库中输入指令要加上分号结尾
show databases;
- 创建数据库:create database 数据库名字;
create database test;
- 在pycharm的项目中找到settings.py文件,在DATABASES字段中进行配置,与创建的数据库进行关联。
DATABASES = {
'default': {
# 1)配置数据库,默认的配置先注释掉
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
# 2)添加mysql的搜索引擎
'ENGINE':"django.db.backends.mysql", #搜索引擎:mysql
'NAME':"test", #在mysql中创建的数据库名字
'USER':"admin", #用户名默认用的都是admin的用户
'PASSWORD':'123456', #用户密码,自己创建虚拟机时设置的
'HOST':"127.0.0.1", #ip:如果时远程连接写远程ip,这里做本地测试填127.0.0.1
'PORT':3306, #默认端口
}
}
- exit;命令退出mysql数据库,切换到自己项目的虚拟环境中,下载PyMySQL模块。pip list可以查看下载的第三方库。
pip install pymysql;
- 在项目根目录下的文件夹中找到__init__.py文件,导入pymysql,输入以下代码,然后启动项目,成功表示数据库的基本连接完成。
import pymysql
# 建立数据库连接
pymysql.install_as_MySQLdb()
7.创建一个新的django应用testApp,配置好基本路由参数,具体参考 https://juejin.cn/post/7086095302804897828
- 打开testapp下的models.py文件,输入以下代码。
from django.db import models
# 1.创建数据表: class 表名()
class Test(models.Model): #继承models.Model 继承父类 实现模型类准备工作
id = models.AutoField(primary_key=True) #id字段 主键自增约束
name = models.CharField(max_length=20,null=True) #设置name最长为20字节,非空约束
age = models.IntegerField() #int类型
sex = models.CharField(max_length=10)
-
进行映射。 点击Tools——>run manage.py——>makemigrations testapp(新创建的应用名)。然后右击testapp,可以将映射记录从虚拟机中下载下来:Deployment——>download from cdproject。这时候testapp下的migrations文件夹里就会生成一个0001_initial.py的文件。
-
进行迁移。在没有迁移之前,数据库中是不会创建数据表的。再次进入mysql数据库,use test;命令使用test这个数据库,此时查看数据库中的表是空的。点击Tools——>run manage.py——>输入migrate testapp,显示ok表示迁移成功。此时在mysql数据中输入show tables,可以查看到两个表,一个表名为testapp_test的表(就是我们创建的),还有一个就是django_migrations,存放我们的映射记录。
-
可以自定义表名。在models.py文件中输入以下代码:把自定义表名部分加上去即可。
from django.db import models
# 1.创建数据表: class 表名()
class Test(models.Model): #继承models.Model 继承父类 实现模型类准备工作
id = models.AutoField(primary_key=True) #id字段 主键自增约束
name = models.CharField(max_length=20,null=True) #设置name最长为20字节,非空约束
age = models.IntegerField() #int类型
sex = models.CharField(max_length=10)
# 自定义表名
class Meta: #Meta类名不要改
db_table = "Test"
- 再重新进行数据映射和迁移。点击Tools——>run manage.py——>输入makemigrations testapp,进行映射。再输入migrate testapp进行迁移,在mysql数据库中查看表名,已经变成自己定义的Test。
13.最后就可以在testapp文件夹中的views.py文件中编写数据的增删改查操作了。