Django将默认的SQLite更换为MySQL的实现

作者:(.*)释然 时间:2024-01-14 15:45:15 

1、注释默认的SQLite3配置:


blogproject/settings.py
'''
DATABASES = {
'default': {
 'ENGINE': 'django.db.backends.sqlite3',
 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
'''

2、添加MySQL配置(配置你自己的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中的表)。

来源:https://blog.csdn.net/zha6476003/article/details/83066187

标签:Django,SQLite,MySQL
0
投稿

猜你喜欢

  • Html中 IFrame的用法及注意点

    2023-07-02 05:30:16
  • MySQL慢查询查找和调优测试

    2024-01-23 08:07:35
  • python数组如何添加整行或整列

    2022-04-29 16:39:30
  • 功能强大,代码简单的管理菜单

    2008-07-11 16:52:00
  • python GUI库图形界面开发之PyQt5窗口类QMainWindow详细使用方法

    2021-03-16 08:53:47
  • python办公自动化之excel的操作

    2023-11-20 14:01:01
  • php asp.net 比较 [推荐]

    2024-04-29 13:57:51
  • Python控制台输出时刷新当前行内容而不是输出新行的实现

    2022-11-28 23:38:22
  • 常用的JavaScript表单验证正则表达式收集

    2008-02-29 08:34:00
  • python通过函数名调用函数的几种方法总结

    2021-03-22 03:40:35
  • pydantic resolve解决嵌套数据结构生成痛点分析

    2022-06-05 02:16:36
  • python买卖股票的最佳时机(基于贪心/蛮力算法)

    2022-12-26 14:44:24
  • 使用Python的音乐播放器GUI的实现

    2022-03-02 05:02:45
  • python通过nmap扫描在线设备并尝试AAA登录(实例代码)

    2021-08-06 23:23:42
  • SQL函数substr使用简介

    2024-01-27 11:12:02
  • python+matplotlib绘制简单的海豚(顶点和节点的操作)

    2023-11-14 11:10:27
  • Python中pip更新和三方插件安装说明

    2021-02-07 13:22:39
  • 详解Python中数据的多种存储形式

    2021-06-07 22:10:53
  • IE不支持border-spacing的解决办法

    2009-04-28 13:11:00
  • PHP中的MYSQL常用函数

    2010-09-30 14:49:00
  • asp之家 网络编程 m.aspxhome.com