python - 我可以使 Django 数据库路径(对于 sqlite3)为 "cross-platform"吗?

标签 python windows django linux macos

我正在学习 Django 和 Python(以及一般编程)。为了简单起见,我在阅读 Django 等教程时使用 sqlite3 作为我的数据库。

我是一个多平台用户(Mac OS、Windows、Linux),具体取决于我当时所在的位置。所以,我所做的就是将我的编程项目放在我的 Dropbox 中,这样我就可以在任何地方处理相同的代码。

问题是,在特定项目的 settings.py 文件中,我指定了数据库路径,如下所示:

DATABASES = {
    'default': {
    'ENGINE': 'django.db.backends.sqlite3',                             # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
    'NAME': 'C:/Users/David/Dropbox/programming/mysite/database',       # Or path to database file if using sqlite3.

...但是当我使用 MacOS 或 Linux 时,显然 C:/会阻塞。我想知道是否有人对此有一个简单的补救措施的建议。当然,我可以做到的一种方法是通过 MySQL 或其他方式在我的网络服务器上远程设置我的数据库,但我认为可能有一种简单的方法可以做到这一点,例如使用“if”语句。

最佳答案

使用 relative paths in settings.py很常见,被许多人认为是最佳实践。这样的事情可能会有所帮助。

from os.path import dirname, join

PROJECT_DIR = dirname(__file__)

DATABASES = {
    # ...
    'NAME': join(PROJECT_DIR, 'your_db_name.db'),
    # ...
}

关于python - 我可以使 Django 数据库路径(对于 sqlite3)为 "cross-platform"吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10889388/

相关文章:

python - 您在 tkinter 中将哪个小部件用于类似 Excel 的表格?

python - 如何使用 gdal 从列表中的矢量图层获取字段值

windows - 键盘布局未出现在语言和输入法中

python - 在/管理控制台中加载新模型时出现问题

python - 如何在 Django 中重复调用views.py 中的函数?

iphone - 将 ASIHTTPRequest 帖子设置为 SimpleHTTPServer Python 服务器?

python - 任何人都可以详细解释 cv 和 cv2 有何不同以及是什么让 cv2 比 cv 更好更快?

windows - 使用 chef 运行 Windows 批处理命令会阻止 chef 提供

c - 为什么 ntdll.dll 导出 NtXXX 和 ZwXXX 而不是仅导出 NtXXX?

带有redis的Django auth