Django中更改默认数据库为mysq

发布时间:2019-10-14 09:22:19编辑:auto阅读(2008)

    Django中默认使用sqlite3数据库,今天研究了下如何将它换成常见的mysql数据库。

    由于项目用得python3,而MySQLdb没有支持python3的版本,如果使用python3.x版本时,pip install MySQLdb时会报错。

    后来通过谷歌发现可以使用pymysql替代MySQLdb

    1 在项目根目录下的__init__.py文件中加入如下代码:

    import pymysql
    pymysql.install_as_MySQLdb()

    2 使用mysqlclient代替MySQLdb,安装方式为:

    pip install mysqlclient

    3 更改项目setting.py中对数据库的配置为:

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'test',
            'USER': 'username',
            'PASSWORD': 'passwd',
            'HOST': 'localhost',
            'PORT': '3306'
        }
    }

    4 最后通过python manage.py migrate命令,Django会在数据库中自动创建相应的表

    Operations to perform:
      Apply all migrations: admin, auth, contenttypes, polls, sessions
    Running migrations:
      Applying contenttypes.0001_initial... OK
      Applying auth.0001_initial... OK
      Applying admin.0001_initial... OK
      Applying admin.0002_logentry_remove_auto_add... OK
      Applying admin.0003_logentry_add_action_flag_choices... OK
      Applying contenttypes.0002_remove_content_type_name... OK
      Applying auth.0002_alter_permission_name_max_length... OK
      Applying auth.0003_alter_user_email_max_length... OK
      Applying auth.0004_alter_user_username_opts... OK
      Applying auth.0005_alter_user_last_login_null... OK
      Applying auth.0006_require_contenttypes_0002... OK
      Applying auth.0007_alter_validators_add_error_messages... OK
      Applying auth.0008_alter_user_username_max_length... OK
      Applying auth.0009_alter_user_last_name_max_length... OK
      Applying polls.0001_initial... OK
      Applying sessions.0001_initial... OK
    

    5 在创建admin用户时,遇到了如下报错

    python manage.py createsuperuser
    Superuser creation skipped due to not running in a TTY. You can run `manage.py createsuperuser` in your project to create one manually.

    后来查了一下,是因为使用了git来执行命令,切换到Windows自带的命令行,可以解决该问题!

关键字