【问题标题】:How do I run SQL queries after a DB connection is established?建立数据库连接后如何运行 SQL 查询?
【发布时间】:2017-05-02 15:02:45
【问题描述】:

我想在网站的生命周期内运行一个命令。我不想多次运行它。

假设我要运行查询:

set names utf8mb4;

然后我会运行类似的东西:

SomeRandomObject.objects.raw('set names utf8mb4;')

我应该把这个放在哪里?我在哪个对象上运行查询是否重要?有没有更好的对象?

【问题讨论】:

标签: django django-1.10


【解决方案1】:

我通常对 connection 对象本身执行此操作。

from django.db import connections
cursor = connections['DATABASE_NAME'].cursor() 
# replace DATABASE_NAME with the name of your
# DATABASE connection, i.e., the appropriate key in the
# settings.DATABASES dictionary
cursor.execute("set names utf8mb4;")

这样您就可以避免使用一些随机模型来运行您的原始查询。


n.b.如果您只有一个数据库连接,即default,您可以使用:

from django.db import connection
cursor = connection.cursor()
cursor.execute("set names utf8mb4;")

要在启动时运行一次,您可以将以下内容添加到您的 DATABASES

DATABASES = {
    'default': {
        ...
        'OPTIONS': {
            "init_command": "set names utf8mb4;"
        }
    }
}

【讨论】:

  • 我在settings.py中只指定了1个数据库配置,所以我想这是一个连接?另外,你把这个放在什么文件里?
  • 是的,这只是一个数据库。你可以把这个 sn-p 放在你想要的任何地方。这取决于你如何称呼它。正如 Paul Collingwood 所建议的,如果您希望它在启动时运行,只需将其放在任何视图之外的视图文件中。
猜你喜欢
  • 2015-11-01
  • 1970-01-01
  • 2013-08-23
  • 1970-01-01
  • 2020-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-11
相关资源
最近更新 更多