在Windows 7上如何将SQLITE与DJANGO一起使用

2 投票
6 回答
5550 浏览
提问于 2025-04-15 16:26

我正在按照DJango网站上的教程进行操作,之前在Windows XP上做的时候一切都很顺利,但在Windows 7上我遇到了以下错误:

sqlite3.OperationalError: unable to open database file

我使用的是:

python manage.py sql Blog

有没有人知道可能出什么问题了?数据库文件位于 C:\Software\Sqlite\Databases\Blog.db

而相关的settings.py文件或其中的部分内容就是:

DATABASE_ENGINE = 'sqlite3'           # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
DATABASE_NAME = 'C:\Software\Sqlite\databases\blog.db'             # Or path to database file if using sqlite3.
DATABASE_USER = ''             # Not used with sqlite3.
DATABASE_PASSWORD = ''         # Not used with sqlite3.
DATABASE_HOST = ''             # Set to empty string for localhost. Not used with sqlite3.
DATABASE_PORT = ''             # Set to empty string for default. Not used with

为了测试,我还给每个人都添加了完全的权限。

但是正如我所说,我遇到了以下错误:

sqlite3.OperationalError: unable to open database file

任何帮助都非常感谢,

安德鲁

6 个回答

0

我猜这个文件其实并不在你想的那个文件夹里。如果你开启了用户账户控制(UAC),那么在Windows 7中,它会让你觉得文件在那个位置(在文件资源管理器中会显示出来)。但实际上,这个文件是存储在c:\users\你的用户名\AppData\Local\VirtualStore\Software\Sqlite\databases或者类似的地方。

10

我知道这个问题已经有了一个被接受的答案,但我觉得你们可能漏掉了一些东西。当你的字符串里面有反斜杠时,应该使用原始字符串。

DATABASE_NAME = r'C:\Software\Sqlite\databases\blog.db' 

如果你不使用原始字符串,会发生这样的事情:

>>> print 'C:\Software\Sqlite\databases\blog.db'
C:\Software\Sqlite\databaselog.db
2

我觉得你不能用完整的Windows路径来访问你的sqlite数据库。我在这里做了一些测试,发现如果想在Django项目中使用不在同一目录下的sqlite3数据库,唯一的方法就是用这样的写法:DATABASE_NAME = '../anotherfolder/db.db'(这个数据库文件在c:\anotherfolder\,而项目则在c:\mydjangoproject)。

撰写回答