如何在WIndows 7上使用带有DJANGO的SQLITE

时间:2009-11-26 21:57:32

标签: python windows django sqlite windows-7

我正在关注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 :(得分:9)

我知道这个问题已经得到了答案,但我认为你错过了一些东西。当字符串包含反斜杠时,您应该使用原始字符串:

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

如果您不使用原始字符串,则会发生这种情况:

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

答案 1 :(得分:2)

我认为您不能使用完整的Windows路径来访问您的sqlite数据库。我在这里运行了一些测试,唯一可以在django上使用sqlite3数据库而不是在项目的同一目录中的方法是使用DATABASE_NAME ='../anotherfolder/db.db'(这位于c:\ anotherfolder \和项目位于c:\ mydjangoproject)

答案 2 :(得分:0)

猜测是该文件实际上不在该目录中。如果您启用了UAC,Windows 7将使文件看起来就像该位置一样(它将显示在Windows资源管理器中)。但是,该文件实际存储在c:\ users \ yourusername \ AppData \ Local \ VirtualStore \ Software \ Sqlite \ databases或类似位置。

答案 3 :(得分:0)

查看文件夹的权限。您的普通用户可以在那里编辑文件吗?

答案 4 :(得分:0)

反转DATABASE_NAME中的斜杠: 从C:\Software\Sqlite\databases\blog.db到。{ C:/Software/Sqlite/databases/blog.db

我在Win7上使用django 1.4,这是我的解决方案 - 文件不需要存在

答案 5 :(得分:0)

反转数据库名称中的斜杠解决了我的问题。