我可以使Django数据库路径(对于sqlite3)"跨平台"吗?

Dav*_*ael 9 python linux windows django macos

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

我是一个多平台用户(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.
Run Code Online (Sandbox Code Playgroud)

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

ist*_*ble 22

在settings.py中使用相对路径是很常见的,被许多人认为是最佳实践.这样的事可能会有所帮助.

from os.path import dirname, join

PROJECT_DIR = dirname(__file__)

DATABASES = {
    # ...
    'NAME': join(PROJECT_DIR, 'your_db_name.db'),
    # ...
}
Run Code Online (Sandbox Code Playgroud)


cbe*_*ner 1

这不是一个很好的解决方案,但您可以测试正在运行的平台,例如:

import platform
'NAME': 'C:/Users/David/Dropbox/programming/mysite/database' if platform.system() == 'Windows' else '<Linux path to sqlite>'
Run Code Online (Sandbox Code Playgroud)