所以我正在构建一个连接到查看旧版DB的Django站点。由于遗留MySQL dbs的一些限制,我需要访问一个视图。从我可以告诉最简单的方法是直接插入SQL。 (inspectdb不适用于视图)。
这是我到目前为止的代码:
from django.db import connection
cursor = connection.cursor()
sqlstring = 'SELECT * FROM Site_Call_Counts'
cursor.execute(sqlstring)
result = cursor.fetchall()
此代码在我将其输入manage.py shell
时有效,但在我尝试完成运行时会中断。这是追溯。
/usr/bin/python2.7 /root/Desktop/IPNV/django-test/src/djangotest/viewTest.py
Traceback (most recent call last):
File "/root/Desktop/IPNV/django-test/src/djangotest/viewTest.py", line 3, in <module>
cursor = connection.cursor()
File "/usr/local/lib/python2.7/dist-packages/django/db/__init__.py", line 33, in __getattr__
return getattr(connections[DEFAULT_DB_ALIAS], item)
File "/usr/local/lib/python2.7/dist-packages/django/db/utils.py", line 208, in __getitem__
self.ensure_defaults(alias)
File "/usr/local/lib/python2.7/dist-packages/django/db/utils.py", line 176, in ensure_defaults
conn = self.databases[alias]
File "/usr/local/lib/python2.7/dist-packages/django/utils/functional.py", line 35, in __get__
res = instance.__dict__[self.name] = self.func(instance)
File "/usr/local/lib/python2.7/dist-packages/django/db/utils.py", line 156, in databases
self._databases = settings.DATABASES
File "/usr/local/lib/python2.7/dist-packages/django/conf/__init__.py", line 56, in __getattr__
self._setup(name)
File "/usr/local/lib/python2.7/dist-packages/django/conf/__init__.py", line 39, in _setup
% (desc, ENVIRONMENT_VARIABLE))
django.core.exceptions.ImproperlyConfigured: Requested setting DATABASES, but settings are not configured.
所以我真的有两个问题。首先,这是完成我需要的最简单的方法,第二,如果我是如何修复此错误。我查看了文档和帖子here和here。文档为django docs
这可能很明显,但我对编码更新,所以要温柔大声笑。
EDIT *** 这是我在settings.py(同一目录)中的数据库定义
},
'default': {
'NAME': 'app2',
'ENGINE': 'django.db.backends.mysql',
'USER': 'admin',
'PASSWORD': 'password',
'HOST': '10.1.1.1',
'PORT': '3306',
},
答案 0 :(得分:0)
已编辑以包含更好的代码段/示例。
如果您不打算创建Django项目但只在您的python文件中使用Django的ORM,您需要创建一个settings.py
文件以及所有模型并初始化Django的配置如下:
from django.conf import settings
settings.configure(
DATABASE_ENGINE = 'postgresql_psycopg2',
DATABASE_NAME = 'db_name',
DATABASE_USER = 'db_user',
DATABASE_PASSWORD = 'db_pass',
DATABASE_HOST = 'localhost',
DATABASE_PORT = '5432',
TIME_ZONE = 'America/Havana',
)
在导入connection
之前。
检查here和official docs。还有一些很好的例子here。