凯发真人娱乐

django如何将默认的sqlite更换为mysql -凯发真人娱乐

2024-01-07

小编给大家分享一下如何将默认的sqlite更换为mysql,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

1、注释默认的sqlite3配置:

blogproject/settings.py
'''
databases = {
 'default': {
  'engine': 'django.db.backends.3',
  'name': os.path.join(base_dir, 'db.sqlite3'),
 }
}
'''

2、添加mysql配置(配置你自己的库前提是你已经有能够供自己使用的mysql库了)

databases = {
 'default': {
  'engine': 'django.db.backends.mysql', #固定配置
  'host': '127.0.0.1',#mysql地址
  'port': '3306',#端口号
  'name': 'guest',#库名(组名)
  'user': 'root',#用户
  'password': '123456',#密码
  'options': {'init_command': "set sql_mode='strict_trans_tables'", },
 }
}

迁移数据库

为了让 django 完成翻译,使用我们在modele.py已经创建好的这些数据库表,我们请出我的工程管理助手 manage.py。激活虚拟环境,切换到 manage.py 文件所在的目录下,分别运行 python manage.py makemigrations和 python manage.py migrate命令:

ps d:\xuexi\python\\django2\blogproject> python manage.py makemigrations
migrations for 'blog':
 blog\migrations\0001_initial.py:
 - create model category
 - create model post
 - create model tag
 - add field tags to post
ps d:\xuexi\python\web接口开发\django2\blogproject> python manage.py migrate
operations to perform:
 apply all migrations: admin, auth, blog, contenttypes, 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 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 blog.0001_initial... ok
 applying sessions.0001_initial... ok

仅供参考你的数量可能没有这么多

当我们执行了 python manage.py makemigrations后,django 在 blog 应用的 migrations\ 目录下生成了一个 0001_initial.py文件,这个文件是 django 用来记录我们对模型做了哪些修改的文件。目前来说,我们在 models.py 文件里创建了 3 个模型类,django 把这些变化记录在了 0001_initial.py里。

不过此时还只是告诉了 django 我们做了哪些改变,为了让 django 真正地为我们创建数据库表,接下来又执行了 python manage.py migrate命令。django 通过检测应用中 migrations\ 目录下的文件,得知我们对数据库做了哪些操作,然后它把这些操作翻译成数据库操作语言,从而把这些操作作用于真正的数据库。

如果你使用的是mysql会生成0001_auto_20180507_2145.py

如果你需要在mysql和sqlite3之间切换你需要重新执行python manage.py makemigrations和 python manage.py migrate命令,而且你原来库中的数据不会转移(执行完上面两个命令只会在新的数据库中创建modele.py中的表)。

看完了这篇文章,相信你对“django如何将默认的sqlite更换为mysql”有了一定的了解,如果想了解更多相关知识,欢迎关注本站行业资讯频道,感谢各位的阅读!

网站地图