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

问题描述 投票:0回答:6

我是 django 框架的新手。

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

这里默认情况下,我们使用sqlite3作为默认数据库引擎:

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

我也尝试了一些ORM查询,甚至执行了一些行sql查询

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

blog  db.sqlite3  env  manage.py  mysite

我的问题:如何知道django在这个db.sqlite3中创建的模式(我知道mysql,我可以在其中查看每个数据库和表的详细信息,所以在这里我只想了解sqlite中的更多内容)

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

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

                                                                  
python python-3.x django sqlite django-database
6个回答
89
投票

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

sqlite3  db.sqlite3

然后

.tables

或 .架构

取决于你想要什么。您可以不直接调用 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 数据库客户端。当你拥有一个时,生活会变得更加轻松。


10
投票

我已经跌跌撞撞地花了一个小时,目的是在 Django shell 中复制

DESCRIBE
表,并认为我已经破解了它。 我希望这对其他人有用。

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

python3 manage.py dbshell
.tables

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

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

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


8
投票

首先,运行以下命令:

python manage.py dbshell

访问sqlite3命令行客户端如下图:

enter image description here

然后,运行以下命令:

.table

或运行以下命令:

.tables

显示SQLite中的所有表,如下所示:

enter image description here

然后,运行以下命令:

.schema --indent store_product

显示“store_product”表的架构,如下所示:

enter image description here


4
投票

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

 python manage.py sqlmigrate app_label migration_name


1
投票

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

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


1
投票

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

那么命令应该是这样的:

python manage.py sqlmigrate my_app_name number

© www.soinside.com 2019 - 2024. All rights reserved.