编辑器推荐pycharm,有python开发环境,django版本2.0python版本3.0
1:启动一个项目,如下图点击file选择new,点击django的写入项目名称即可
2:刚建立好的项目的初始化如下图
3:我们可以初始化一个app,python manage.py startapp pools,我们可以看到已经生产一个app pools
4: 根据开发的习惯我们喜欢app放在同一个文件夹下面 方便后期引入使用和修改,所以我们创建一个apps文件夹来保存我们的应用,目录如下图
这样把pools移动到apps里面去,并且把apps.pools添加到settings
5:来配置我们的数据库,mysql为例子,首先安装pymysql pip install pymysql(这个地方插一句,自动安装的pip 可能不是很好用建议大家网上搜索get-pip.py 通过python get-pip.py来安装pip)
安装完pymysql 之后,再settings.py 里面引入
引入以后就可以定义我们的数据库了,同样的出于开发debug方便和后期再settings里面的引入文件过多我们需要建一个conf文件下面来存储我们每个需要引入模块的配置这个conf和settings是同级的,此处不上图了比较简单,直接看mysql配置
DATABASES = {
'default': { #默认配置数据库名字,多数据时可以修改'ENGINE': 'django.db.backends.mysql',
'NAME': '***', #数据库名'USER':'***', #数据库用户名'PASSWORD':'***',#数据库密码'HOST': '***',#主机名'PORT':***,#端口'CONN_MAX_AGE': None,
'OPTIONS':{'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
},
'TEST': {
'CHARSET': 'utf8',
'COLLATION': 'utf8_general_ci',
}
}
}
如果连接的事oracle的数据库,把ENGINE的字段改成
django.db.backends.oracle
如果一个项目中需要连接多个数据库,连接名字不能都用默认名字需要不同的名字区别
DATABASES = {
'mysqlname': { #默认配置数据库名字,多数据时可以修改'ENGINE': 'django.db.backends.mysql',
'NAME': 'test', #数据库名'USER':'***', #数据库用户名'PASSWORD':'***',#数据库密码'HOST': '***',#主机名'PORT':****#端口
},
'oraclename': { #默认配置数据库名字,多数据时可以修改'ENGINE': 'django.db.backends.oracle',
'NAME': '***', #数据库名'USER':'***', #数据库用户名'PASSWORD':'***',#数据库密码'HOST': '***',#主机名'PORT':***,#端口
},
}
对于多个数据库映射model的问题对应的
classWebCheckKeyWordGroup(models.Model):
classMeta:
db_table = "***"
app_label = 'oracle'
name = models.CharField(max_length=255, null=False, default="", verbose_name="组名")
以上我们在class Meta里面添加了app_label
编写自己的数据库路由,根据app_label 指向哪一个数据库
class AuthRouter:
"""
A router to control all database operations on models in the
auth application.
"""
def db_for_read(self, model, **hints):
"""
Attempts to read auth models go to auth_db.
"""
if model._meta.app_label == 'oracle':
return 'oraclename'
return 'default'
def db_for_write(self, model, **hints):
"""
Attempts to write auth models go to auth_db.
"""
if model._meta.app_label == 'oracle':
return 'oraclename'
return 'default'
def allow_relation(self, obj1, obj2, **hints):
"""
Allow relations if a model in the auth app is involved.
"""
if obj1._meta.app_label == 'oracle':
return 'oraclename'
return 'default'
def allow_migrate(self, db, app_label, model_name=None, **hints):
"""
Make sure the auth app only appears in the 'auth_db'
database.
"""
if app_label == 'oracle':
return db == 'oraclename'
return 'default'
然后把我们写的路由添加到settings里面就ok
DATABASE_ROUTERS = ['path.to.AuthRouter']
以上配置完我们的mysql,如何查看我们的配置没有问题,打开terminal 运行python manage.py shell
如果没有出现报错,就是没有问题的
以上是我们数据库的基础配置有问题可私信,大家共同进步