【发布时间】:2011-11-17 20:53:32
【问题描述】:
我已经安装了 python 并且包含了 sqlite...但是使用manage.py syncdb 创建的 sqlite db 文件路径在哪里?我在 Mac 上。
【问题讨论】:
标签: python django macos sqlite
我已经安装了 python 并且包含了 sqlite...但是使用manage.py syncdb 创建的 sqlite db 文件路径在哪里?我在 Mac 上。
【问题讨论】:
标签: python django macos sqlite
如果设置不可用,那么这可以嵌入到您的 packageName/base 目录中:
尝试:
import packageName
import os.path.abspath
In [3]: os.path.abspath(packageName.DATABASES['default']['NAME'])`
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-3-ca6dcbd75c6d> in <module>()
----> 1 os.path.abspath(settings.DATABASES['default']['NAME'])
>>> NameError: name 'settings' is not defined
>>> os.path.abspath(packageName.settings.DATABASES['default']['NAME'])`
>>> '/Users/brandizzi/Documents/software/netunong/database.db'
【讨论】:
在settings.py 文件中,有一个名为DATABASES 的变量。它是一个字典,它的一个键是default,它映射到另一个字典。这个 subdict 有一个键 NAME,它有 SQLite 数据库的路径。
这是我的一个项目的一个例子:
CURRENT_DIR= '/Users/brandizzi/Documents/software/netunong'
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': CURRENT_DIR+ '/database.db', # <- The path
'USER': '',
'PASSWORD': '',
'HOST': '',
'PORT': '',
}
}
您可以使用运行python manage.py shell 命令可访问的 Django shell 轻松检索此值。只需按照以下步骤操作:
>>> import settings
>>> settings.DATABASES['default']['NAME']
'/Users/brandizzi/Documents/software/netunong/database.db'
如果返回值是相对路径,直接用os.path.abspath求绝对路径即可:
>>> import os.path
>>> os.path.abspath(settings.DATABASES['default']['NAME'])
'/Users/brandizzi/Documents/software/netunong/database.db'
【讨论】:
settings.py 文件移动到 settings 文件夹以针对不同的环境设置进行拆分后,这对我有所帮助。我的本地数据库文件向内移动了一个目录,并不断创建一个空目录。很高兴知道这是如何工作的