Django中更改默认数据库为mysql的方法示例

yipeiwu_com6年前Python基础

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自带的命令行,可以解决该问题!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

在Python中使用dict和set方法的教程

在Python中使用dict和set方法的教程

dict Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。 举个例子,假设要...

python 申请内存空间,用于创建多维数组的实例

以三维数组为例 先申请1个一维数组空间: mat = [None]*d1 d1是第一维的长度。 再把mat中每个元素扩展为第二维的长度: for i in range(len(...

tensorflow的计算图总结

计算图 在 TensorFlow 中用计算图来表示计算任务。 计算图,是一种有向图,用来定义计算的结构,实际上就是一系列的函数的组合。 用图的方式,用户通过用一些简单的容易理解的数学函...

python脚本调用iftop 统计业务应用流量的思路详解

因公司服务器上部署应用较多,在有大并发访问、业务逻辑有问题的情况下反复互相调用或者有异常流量访问的时候,需要对业务应用进行故障定位,所以利用python调用iftop命令来获取应用进程流...

讲解Python中运算符使用时的优先级

讲解Python中运算符使用时的优先级

 运算符优先级来确定条件的表达式中的分组。这会影响一个表达式如何计算。某些运算符的优先级高于其他;例如,乘法运算符的优先级比加法运算更高。 例如x=7 + 3* 2;这里,x被...