Python Django中MySQL和SQLite3的切换

Python Django中MySQL和SQLite3的切换,python,mysql,django,sqlite,Python,Mysql,Django,Sqlite,我正在Mercurial的一个项目中工作,该项目使用Django。代码中(在settings.py下)有: SESSION_ENGINE = 'django.contrib.sessions.backends.db' DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'foo', 'USER': 'bar', 'PASSWORD': 'baz', 'HO

我正在Mercurial的一个项目中工作,该项目使用Django。代码中(在
settings.py
下)有:

SESSION_ENGINE = 'django.contrib.sessions.backends.db'
DATABASES = {
    'default': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME': 'foo',
    'USER': 'bar',
    'PASSWORD': 'baz',
    'HOST': '',
    'PORT': '',
    'OPTIONS': { 'init_command': 'SET storage_engine=INNODB;' },
    }
}

#Use a local mysql db for development
if IN_DEVELOPMENT:
    DATABASES["default"] = {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'foo',
        'USER': 'bar',
        'PASSWORD': 'baz',
        'HOST': '',
        'OPTIONS': { 'init_command': 'SET storage_engine=INNODB;' },
        }
有人告诉我,我可以简单地用
sqlite3
替换
if in_DEVELOPMENT
块中的
mysql
(因为我没有mysql,我安装它的尝试也没有成功)。当我加载任何页面时,这会导致一个错误,我可以通过注释掉第二行
OPTIONS
来解决这个问题。现在我能够加载完全依赖静态数据的页面。但当我试图访问一个表时,我得到了(尽管“no-this table”的名称各不相同)


我必须从项目中重新创建数据库表吗?是否有一个
init_命令
(如果表不存在,我假定它会创建这些表?)我可以与
sqlite3
一起使用?除了下载
MySQL-python
(这会有帮助吗?

当然,您需要创建表,因为它们在新数据库中不存在。您可以使用与最初完全相同的方式执行此操作:通过运行
manage.py migrate

我遇到了lodadata会话的问题

这给了我解决办法

" 要解决此问题,请确保通过排除contenttypes和auth.permissions表来备份数据库 ./manage.py dumpdata--排除auth.permission--排除contenttypes>db.json "
它适合我。

不要发布dropbox链接。。。因为他们在后勤室后面,谢谢你。更新链接尝试删除文件
foo
。。。我认为django只有在数据库不存在的情况下才会自动重建表(或者您可能需要运行
admin.py syncdb
或其他任何东西(我没有足够清楚地使用django)