关于python:使用Django的SQLite 3数据库

SQLite 3 Database with Django

我被困在关于显示SQLite表的Django文档教程中。

"如果您感兴趣,请运行数据库的命令行客户端并键入 dt(PostgreSQL),SHOW TABLES;(MySQL)或.schema(SQLite)以显示Django创建的表。"

我创建了一个名为mysite的项目。 地点:C:\Python34\Scripts\mysite

mysite内,有mysite文件夹,db.sqlite3manage.py

我打开命令提示符并导航到C:\Python34\Scripts\mysite并输入.schema,然后返回"。架构无法识别.."

我的settings.py数据库文件:

1
2
3
4
5
6
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join('BASE_DIR' , 'db.sqlite3'),
    }
}

我也无法定义BASE_DIR。 我不知道db.sqlite3文件。 我不知道该文件是否是.db扩展名。

有人可以帮我找出来吗?


.schema是一个在sqlite3命令行界面内运行的命令,用于获取该数据库中的表列表。

如果您还没有安装它,可以在这里下载sqlite3命令行界面并安装它:
https://www.sqlite.org/download.html

安装sqlite3后,您可以:

  • 将目录更改为包含sqlite3数据库文件的文件夹

    cd C: Python34 Scripts mysite

  • 使用sqlite3命令行界面打开数据库文件

    sqlite3 db.sqlite3

  • 通过在sqlite3命令行界面提示符下键入.schema来获取表列表

    .schema


您没有"为您的数据库运行命令行客户端",您只需导航到该目录。命令行客户端是"sqlite3",尽管您可能没有在Windows上安装它。

您不需要定义BASE_DIR,它已在设置文件中定义得更高,但您确实需要将其称为变量,而不是字符串:

1
'NAME': os.path.join(BASE_DIR , 'db.sqlite3'),


BASE_DIR不是字符串。它是一个变量,其值由django在settings.py文件中自动声明。您只需要删除BASE_DIR使用中的引号。

1
2
3
4
5
6
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR , 'db.sqlite3'),
    }
}


您可能必须更改数据库的settings.py文件。
'NAME':'db.sqllite3',放在数据库字典中。

这将在项目目录中创建db.sqlite3文件。它解决了我的问题。希望这可以帮助。


BASE_DIR是变量而不是字符串,添加您需要的import os和BASE_DIR case

1
2
3
4
5
6
7
8
9
import os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

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