如何查看 django sqlite3 db 的数据库和模式

Posted

技术标签:

【中文标题】如何查看 django sqlite3 db 的数据库和模式【英文标题】:How to view database and schema of django sqlite3 db 【发布时间】:2017-07-02 20:07:56 【问题描述】:

我是 django 框架的新手。

我尝试按照 djangogirls 教程创建一个简单的博客。

这里默认使用 sqlite3 作为默认数据库引擎

DATABASES = 
    'default': 
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    

我也尝试了一些ORM queries,甚至performed some row sql queries

在我的 django 项目中,我有这个 db.sqlite3 文件

blog  db.sqlite3  env  manage.py  mysite

我的问题:如何知道 django 在这个 db.sqlite3 中创建的架构(我知道 mysql 在那里我可以看到每个数据库和表的详细信息,所以在这里我只想知道更多的东西在sqlite中)

我的系统中有 sqlite3,我尝试了 .database 命令,但它只是显示给我

seq  name             file                                                      
---  ---------------  ----------------------------------------------------------
0    main 

【问题讨论】:

你试过.schema吗? 是的,它显示为空白。试过 .help 和所有命令也 【参考方案1】:

转到数据库所在的文件夹,然后

sqlite3  db.sqlite3

然后

.tables

或 .schema

取决于你想要什么。而不是直接调用 sqlite3 你可以这样做

 python manage.py dbshell 

然后输入 sqlite 命令。

如果您使用的是旧数据库,则可以使用 Django 模型为该数据库生成

 python manage.py inspectdb

请参阅https://docs.djangoproject.com/en/3.0/ref/django-admin/#django-admin-inspectdb 了解更多信息。

但是请帮自己一个忙,并获得一个 GUI 数据库客户端。有了它,生活就轻松多了。

【讨论】:

嗯,是的,这一切都假设您的系统上有 sqlite3 可用 sqlite3django 一起安装。【参考方案2】:

您可以使用以下命令获取创建的数据库的sql脚本。

python manage.py sqlmigrate app_label migration_name

【讨论】:

【参考方案3】:

您可以在线查看您的 db.sqlite 文件。sqlite Online

只需将您的文件上传到那里,您就可以看到您的 db.sqlite 文件中的表。

【讨论】:

我的文件打不开【参考方案4】:

为了在 Django shell 中复制 DESCRIBE 表,我已经跌跌撞撞了一个小时,并认为我已经破解了它。 我希望这对其他人有用。

在终端中 - 输入以下命令。

python3 manage.py dbshell
.tables

找到您要查找的表的名称,然后运行以下命令:

.header on
.mode column
pragma table_info('table you are looking for');

不要忘记最后一条指令中的分号。

【讨论】:

【参考方案5】:

只是想补充一点,有人可以在 my_project_name>my_app_name>migrations 下找到迁移,通常您会选择编号最大的迁移。

那么命令应该是这样的:python manage.py sqlmigrate my_app_name number

【讨论】:

以上是关于如何查看 django sqlite3 db 的数据库和模式的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Django 不在 SQLite3 中重置序列?

db.sqlite3数据库的使用简介

不忽略 db.sqlite3 文件,即使我在 django 项目的 .gitignore 中指定

为啥 django test --keep-db 适用于 postgres 数据库但不适用于默认 sqlite3

django数据库读写分离,分库

Django入门问题解决01