【问题标题】:SQLite 3 Database with Django带有 Django 的 SQLite 3 数据库
【发布时间】:2015-10-24 02:51:26
【问题描述】:

我被困在关于显示 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,它返回“.schema is not recognize..”

我的settings.py 数据库文件:

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

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

有人可以帮我找出答案吗?

【问题讨论】:

    标签: python django sqlite


    【解决方案1】:

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

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

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

    【讨论】:

    • 哦..我想我必须将“BASE_DIR”更改为一个位置。谢谢你的解释。
    【解决方案2】:

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

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

    安装 sqlite3 后,您可以:

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

      cd C:\Python34\Scripts\mysite

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

      sqlite3 db.sqlite3

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

      .schema

    【讨论】:

    • Django 文档指出:“默认情况下,配置使用 SQLite。如果您是数据库新手,或者您只是对尝试 Django 感兴趣,这是最简单的选择。SQLite 包含在Python,因此您无需安装其他任何东西来支持您的数据库”。这是否意味着我不必再次安装 SQLite?
    • 然后您应该能够在 Windows 控制台中键入“sqlite3 -version”并获得响应。如果是这样,您不需要安装 sqlite3 命令行界面。您可以继续执行其余步骤。
    • 似乎“sqlite3 无法识别...”。所以,我必须重新安装,对吧?
    • 我认为 django 为您安装的只是 sqlite3 数据库驱动程序。所以从技术上讲,您不需要 sqlite3 命令行界面来运行支持 sqlite3 的 Django 项目。如果你想在 Django 之外的数据库中查看,你只需要 sqlite3 命令行界面。所以是的,如果您想使用“.schema”命令查看其中的内容,您需要安装 sqlite3 命令行界面。 :)
    • 好的,我会安装它。谢谢你的解释。
    【解决方案3】:

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

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

    【讨论】:

    • 感谢您的解释
    【解决方案4】:

    BASE_DIR 是变量而不是字符串,添加你需要的 import os 和 BASE_DIR 案例

    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'),
        }
    }
    

    【讨论】:

      【解决方案5】:

      您可能需要更改数据库的 settings.py 文件。 将'NAME':'db.sqllite3', 放入数据库字典中。

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

      【讨论】:

        猜你喜欢
        • 2015-10-26
        • 1970-01-01
        • 2011-08-12
        • 1970-01-01
        • 1970-01-01
        • 2020-08-15
        • 2023-03-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多