gpt4 book ai didi

python - 为什么我有这个数据库问题?

转载 作者:搜寻专家 更新时间:2023-10-30 21:56:22 25 4
gpt4 key购买 nike

我正在做一个 Python/Django 项目,我们需要使用两个数据库。按照文档,我添加了第二个数据库,如下所示:

DATABASE_URL = os.getenv('DATABASE_URL', 'postgres://*******:********@aws-us-***********:*****/*****')
CURRENCIES_URL = os.getenv('CURRENCIES_URL', 'postgres://*******:********@aws-us-***********:*****/*****')

DATABASES = {
'default': dj_database_url.parse(DATABASE_URL),
'currencies': dj_database_url.parse(CURRENCIES_URL)
}

parse() 方法以对象期望的格式返回数据。

然后,我有这段代码:

currencies = connection['currencies'].cursor()

基本上,这允许我在数据库上运行自定义 SQL 代码,方法是返回其游标并将其存储在 currencies

然而,当运行这段代码时,我在控制台中得到了这个:

url(r'^', include('btcmag.urls', namespace="btcmag")),
File "/Users/john/.virtualenvs/btcmag/lib/python2.7/site-packages/django/conf/urls/__init__.py", line 50, in include
urlconf_module = import_module(urlconf_module)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", line 37, in import_module
__import__(name)
File "/Users/john/btcmag/btcmag/urls.py", line 7, in <module>
from . import views
File "/Users/john/btcmag/btcmag/views.py", line 4, in <module>
from .apis import getTrendingArticles, getTickers, getCurrency, getHistory
File "/Users/john/btcmag/btcmag/apis.py", line 9, in <module>
currencies = connection['currencies'].cursor()
TypeError: 'DefaultConnectionProxy' object has no attribute '__getitem__'

一些说明:

  • 当我只运行 currencies = connection.cursor() 时,它使用 default 数据库并且工作正常,这告诉我它不是连接模块

  • 如果我在数据库设置中切换 currenciesdefault 它也可以正常工作 - 运行 currencies = connection.cursor() - 默认使用货币数据库。所以数据库也不是问题。

是什么导致了这里的问题?

最佳答案

您的代码中有一个很小但致命的拼写错误。它应该是 django.db.connections 而不是你的 connection (你没有指定它来自哪里)。

引自https://docs.djangoproject.com/en/1.11/topics/db/sql/#executing-custom-sql-directly

If you are using more than one database, you can use django.db.connections to obtain the connection (and cursor) for a specific database. django.db.connections is a dictionary-like object that allows you to retrieve a specific connection using its alias:

from django.db import connections
cursor = connections['my_db_alias'].cursor()
# Your code here...

关于python - 为什么我有这个数据库问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45489388/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com