django - 在使用dbshel​​l sqlite3时有太多选项

时间:2010-10-23 01:52:34

标签: django sqlite

我有django 1.2.3.0 Final,我正在使用Python 2.7

在我的设置中,我为DATABASE_ENGINE填充了'sqlite3'。 我能够使用sqlite3(在djano manage.py shell级别),直到我被告知我需要访问

  

python manage.py dbshel​​l

起初我收到错误“sqlite3无法识别....” 然后我读线程,我发现这可以通过下载解决 exe文件并在Windows上设置环境变量路径(我在 XP Pro)

我改用了这种方法 http://groups.google.com/group/django-users/msg/cf0665c227030ae2

现在当我访问 python manage.py dbshel​​l 时,我正在

C:\Documents and Settings\JohnWong\workspace\mysite\mysite>python
manage.py dbsh
ell
sqlite3: Error: too many options: "Settings\JohnWong\workspace\mysite
\sqlite.db"

Use -help for a list of options.

我尝试使用--database = name_of_my_db但仍然没有运气

任何输入都表示赞赏。 谢谢

2 个答案:

答案 0 :(得分:2)

根问题(仍然存在于django 1.3.1中)是执行sqlite3客户端的代码不处理sqlite db pathname中的空格。我添加了一些引用如下:

django.db.backends.sqlite3 / client.py

class DatabaseClient(BaseDatabaseClient):
        executable_name = 'sqlite3'

        def runshell(self):
            args = [self.executable_name,
                    '"' + self.connection.settings_dict['NAME'] + '"'] # JA HACK 
            if os.name == 'nt':
                sys.exit(os.system(" ".join(args)))
            else:
                os.execvp(self.executable_name, args)

它现在适用于我(仅测试了Windows - os.name'nt'')。

答案 1 :(得分:0)

提问者回答了他自己的问题here