关于Django中ORM数据库迁移的配置
Django中ORM数据库迁移配置
1,若想将模型转为mysql数据库中的表,需要在settings中配置:
DATABASES = { \'default\': { \'ENGINE\': \'django.db.backends.mysql\', \'NAME\':\'bms\', # 要连接的数据库,连接前需要创建好 \'USER\':\'root\', # 连接数据库的用户名 \'PASSWORD\':\'\', # 连接数据库的密码 \'HOST\':\'127.0.0.1\', # 连接主机,默认本级 \'PORT\':3306 # 端口 默认3306 } }
2,需要激活我们的mysql。然后,启动项目,会报错:no module named MySQLdb 。这是因为django默认你导入的驱动是MySQLdb,可是MySQLdb 对于py3有很大问题,所以我们需要的驱动是PyMySQL 所以,我们只需要找到项目名文件下的init,在里面写入:
import pymysql pymysql.install_as_MySQLdb()
*注意1,需确保配置文件中的INSTALLED_APPS中写入我们创建的app名称
INSTALLED_APPS = [ \'django.contrib.admin\', \'django.contrib.auth\', \'django.contrib.contenttypes\', \'django.contrib.sessions\', \'django.contrib.messages\', \'django.contrib.staticfiles\', "book" ]
*注意2,如果报错如下:
django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.3 or newer is required; you have 0.7.11.None
MySQLclient目前只支持到python3.4,因此如果使用的更高版本的python,需要修改如下:
通过查找路径C:\Programs\Python\Python36-32\Lib\site-packages\Django-2.0-py3.6.egg\django\db\backends\mysql 这个路径里的文件把
if version < (1, 3, 3): raise ImproperlyConfigured("mysqlclient 1.3.3 or newer is required; you have %s" % Database.__version__)
注释掉 就OK了。
*注意3,如果想打印orm转换过程中的sql,需要在settings中进行如下配置:
LOGGING = { \'version\': 1, \'disable_existing_loggers\': False, \'handlers\': { \'console\':{ \'level\':\'DEBUG\', \'class\':\'logging.StreamHandler\', }, }, \'loggers\': { \'django.db.backends\': { \'handlers\': [\'console\'], \'propagate\': True, \'level\':\'DEBUG\', }, } }