python - Django从多个数据库中读写
问题描述
大家好,我正在 django 中开发一个 Web 应用程序,并且正在使用 postgresql 数据库。我还必须能够从另一个使用 sqlserver 数据库的应用程序中获取一些数据。我试图获取的表有很多数据,所以使用直接链接可能是不明智的。关于这个问题,哪种方法最好?我可以使用 sql-odbc 连接来获取数据,还可以如何填充表假设我创建了一个本地表并将数据从 sql 迁移到 postgresql schedualy。想了解您是如何处理这个问题的以及您的经验。谢谢!
解决方案
在您的 settings.py 中编辑此代码(用于多个数据库)
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'django',
'USER': 'postgres',
'PASSWORD': '12345678',
'HOST': 'localhost',
'PORT': '5432',
},
'connection_other_db': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'mi_db',
'USER': 'root',
'PASSWORD': 'root',
'HOST': 'localhost',
'PORT': '3306',
}
}
应用迁移命令:
对于默认数据库
$ ./manage.py migrate
对于其他数据库(connection_other_db)
$ ./manage.py migrate --database=connection_other_db
在您看来, 要使用 ORM,请使用以下命令:
Mi_Model.objects.using('connection_other_db').all() # For mysql database
Mi_Model.objects.all() # For default database (postgresql)
对于创建对象:
s = Mi_Model()
s._state.adding = False
s._state.db = 'connection_other_db'
s.field_1 = 'A value'
s.save()
或者
s = Mi_Model.objects.using('connection_other_db').create(
field_1='A value'
# ....
)
对于使用事务:
with transaction.atomic(using='connection_other_db'):
# Your code here
用于使用游标
with connections['connection_other_db'].cursor() as cursor:
cursor.execute('your query')
Django 文档: https ://docs.djangoproject.com/es/2.1/topics/db/multi-db/
推荐阅读
- c# - 在 C# 中具有相同类名的不同 HTML 节点
- node.js - Mongoose updateMany() 在嵌套模型中不起作用
- android - 如何在应用程序之外复制 Google Pay 流程?
- javascript - 颜色特定文本
- google-apps-script - 我可以使用谷歌应用脚本为谷歌工作表中的一张工作表创建密码吗?
- c# - IVI-COM Driver C# 如何在调用 Initialize 方法之前更改串口配置?
- firebird - 如何使用 Firebird 触发器从表中获取值
- javascript - 当我滑动输入范围滑块时,flexbox 中的表单元素不固定
- python - Python 十进制计算不精确
- php - Laravel 护照未经身份验证的消息