Django连接MySQL,PostgreSQL及动态配置
配置 SQLITE
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
配置 MySQL
安装依赖:
pip install mysqlclient
配置:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'test', # 数据库名
'USER': 'root', # 用户名
'PASSWORD': 'zhangdapeng520', # 密码
'HOST': '127.0.0.1', # 主机
'PORT': 3306,
# 取消外键约束,否则多对多模型迁移报 django.db.utils.IntegrityError: (1215, 'Cannot add foreign key constraint')
'OPTIONS': {
"init_command": "SET foreign_key_checks = 0;",
'charset': 'utf8mb4'
},
}
}
配置PostgreSQL
安装依赖:
pip install psycopg2
数据库配置:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2', # 数据库引擎
'NAME': 'postgres', # 数据库名,Django不会帮你创建,需要自己进入数据库创建。
'USER': 'postgres', # 设置的数据库用户名
'PASSWORD': 'zhangdapeng520', # 设置的密码
'HOST': '127.0.0.1', # 本地主机或数据库服务器的ip
'PORT': '5432', # 数据库使用的端口
}
}
动态配置
# 数据库配置
DB_TYPE = "mysql"
if DB_TYPE == "mysql":
# 数据库信息
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'test', # 数据库名
'USER': 'root', # 用户名
'PASSWORD': 'zhangdapeng520', # 密码
'HOST': '10.1.3.86', # 主机
'PORT': 3306,
# 取消外键约束,否则多对多模型迁移报django.db.utils.IntegrityError: (1215, 'Cannot add foreign key constraint')
'OPTIONS': {
"init_command": "SET foreign_key_checks = 0;",
'charset': 'utf8mb4'
},
}
}
else:
DATABASES = {
"default": {
"ENGINE": "django.db.backends.sqlite3",
"NAME": BASE_DIR / "db.sqlite3",
}
}
THE END