2009-06-02 36 views
3

我正在开发一个在windows上使用sqlite的Django应用程序。这个数据库在Linux机器上工作吗?如果不是,我如何复制在Linux上的新数据库的数据(创建脚本是一种方式)?在sqlite数据库之间传输数据

回答

8

SQLite兼容Windows和Linux平台。

The database file format is cross-platform - you can freely copy a database between 32-bit and 64-bit systems or between big-endian and little-endian architectures. These features make SQLite a popular choice as an Application File Format.

来源:http://sqlite.org/about.html

9

正如罗伯特写道,SQLite的文件应该在任何平台上运行。如果您决定切换到MySQL或PostgreSQL可以运行下面的(标准)命令来保存在Windows计算机上的数据库:

manage.py dumpdata <app1> <app1> > mydbdump.json 

,然后配置Linux机器上的settings.py为MySQL或PostgreSQL数据库和运行:

manage.py syncdb 
manage.py loaddata ./mydbdump.json 

我已经成功地做了几次这样从MySQL切换到SQLite它工作正常。

仅供参考,您可以省略dumpdata命令中的列表以转储所有已安装应用程序的数据,但不可能将其加载回来。全包转储将包含一些内部Django记录,例如default内容类型和用户认证,这些也是由syncdb命令创建的。所以你得到的错误如

IntegrityError: columns app_label, model are not unique

列出你想要转储和加载的特定应用程序,它会工作。

+3

转储所有django模型并尝试加载时,“IntegrityError:columns app_label,model is not unique”错误会显示出来。你可以使用“python manage.py dumpdata auth.User myapp1 myapp2”来代替(只从django转储用户模型)。 – xhh 2011-03-06 14:05:01