在Django中处理本地和远程数据库

时间:2010-09-26 01:45:04

标签: mysql database django

我正在使用Django和MySQL来提供网站服务。我的本地站点上有自己的MySQL服务器。现在我有一个第三方MySQL数据库,我需要用来读取和写入远程主机上的数据库。我在settings.py文件中设置了新数据库的信息,但是当我尝试访问远程数据库时出现问题。因为新的DB不是由我创建的,所以我在models.py文件中没有相应的类。从中读取Model.objects.using('remote_db_name')的常规方法.get(pk = 0)不起作用,因为它会引发NameError。

我想知道在Django中处理本地和远程数据库的正确方法是什么,特别是当远程数据库只为您提供SELECT和INSERT权限时。我在网上找到的所有教程都是关于在同一个Django站点中定义的多个数据库,因此models.py文件包含了所需的所有数据。

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

您有两种选择:

  1. 使用Django的legacy database support为您现有的数据库自动生成模型。

  2. 跳过Django ORM,并使用原始SQL对数据库执行SQL语句。

答案 1 :(得分:1)

我在Django的遗留支持下度过了许多艰难时刻--Dango并非严格设计用于支持遗留数据库。当然有一些工具/方法(如上面提到的Ned),但我宁愿推荐SQLAlchemy作为替代方案。它非常快,它被设计为支持任何类型的数据库,无论它们是通过sqlalchemy创建的,也不是传统的数据库。

当然,如果您需要所有其他Django的元素,请选择Ned的解决方案,但请记住,您必须在此旧数据库中创建django核心表,因此您将需要CREATE权限。