django多数据连用

发布于 2022-09-05 10:04:05 字数 409 浏览 16 评论 0

ps:括号内是注释,以免答题者不理解在下的意思,可以不看。
核心内容是我在django中操作数据库非要和django那样子使用model.sql_name.objects 来操作吗?不能使用cursor.execute('')吗?
应为有的时候后者反而能更清楚的传达我的意愿。
正文:
请问django使用sqlite3的同时部分数据想要保存在远程服务器的mysql中,是应该按照网上的做法,在project_name文件夹中存放 database_router.py(详见自强学院的多数据库连用教程)吗?

我有一个大胆的想法就是,写一个库,然后用到的时候调用难道不也可以吗。。这两者有什么区别呢?(一种是按照django中的model 方式调用,一种是直接写好调用方法在py文件中,然后import这个文件在对数据库进行操作)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

掀纱窥君容 2022-09-12 10:04:05
  1. 能不能使用 cursor.execute?可以的。
from django.db import connection

with connection.cursor() as cursor:
    cursor.execute("UPDATE bar SET foo = 1 WHERE baz = %s", [self.baz])
    cursor.execute("SELECT foo FROM bar WHERE baz = %s", [self.baz])
    row = cursor.fetchone()
  1. 怎样操作多个数据库
    感觉 lejoy 说的那种方法不错的。

你也可以自己封装(写个库啥的)。但是,django 都已经封装好了,就没必要自己造轮子了。

深爱成瘾 2022-09-12 10:04:05

1、settings.py 里的DATABASES里配置多个数据库,比如:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': DEFAULT_DB_NAME,
        'USER': DEFAULT_DB_USER,
        'PASSWORD': DEFAULT_DB_PASSWORD,
        'HOST': DEFAULT_DB_HOST,
        'PORT': DEFAULT_DB_PORT,
    },
    'other': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': DB_NAME,
        'USER': DB_USER,
        'PASSWORD': DB_PASSWORD,
        'HOST': DB_HOST,
        'PORT': DB_PORT,
    },
}

2、如果要使用default数据库:
查询:obj = xxx.objects.get(id=1)
保存:obj.save()
如果要使用other数据库:
查询:obj = xxx.objects.using('other').get(id=1)
保存:obj.save(using='other')

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文