Tôi có một cơ sở dữ liệu tốt đẹp mà tôi đã tạo ở Django và tôi muốn giao tiếp với một số mã python bên ngoài nội dung trang web của tôi, vì vậy tôi rất tò mò nếu có thể sử dụng API cơ sở dữ liệu Django bên ngoài của một trang web Django, và nếu như vậy không ai có bất kỳ thông tin về cách nó có thể được thực hiện? Google đã không mang lại nhiều lượt truy cập cho điều này.Sử dụng lớp cơ sở dữ liệu Django bên ngoài Django?
Trả lời
Bạn chỉ cần định cấu hình cài đặt Django trước khi thực hiện bất kỳ cuộc gọi nào, kể cả nhập mô hình của bạn. Một cái gì đó như thế này:
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/New_York',
)
Một lần nữa, hãy chắc chắn để chạy mã mà trước khi chạy, ví dụ .:
from your_app.models import *
Sau đó chỉ cần sử dụng API DB như bình thường.
Đối với sử dụng Django ORM từ các ứng dụng khác mà bạn cần:
1) export DJANGO_SETTINGS_MODULE=dproj.settings
2) Thêm thư mục ứng dụng Django của bạn vào đường dẫn (bạn có thể làm điều đó trong mã của phi django-ứng dụng của bạn):
sys.path = sys.path + ['/path/to/your/app/']
3) Nếu sử dụng SQLite, sử dụng đường dẫn đầy đủ đến file db trong settings.py:
DATABASE_NAME = '/path/to/your/app/base.db'
Là một thay thế hacky để thiết lập biến môi trường đúng cách, bạn có thể đặt os.environ ['DJANGO_SETTINGS_MODULE'] = dproj.settings ở trên cùng trước khi nhập các mô-đun ứng dụng của bạn . Điều đó chỉ thay đổi DJANGO_SETTINGS_MODULE trong suốt quá trình đó. – twneale
Đây là một cách tiếp cận rất tốt, không sao chép các cài đặt như trái ngược với câu trả lời được chấp nhận. Ngoài ra, nếu cài đặt Django đã chứa đường dẫn tuyệt đối vào tệp SQLite, đó là trường hợp ** với phiên bản Django hiện tại **, thì ** bước 3 không bắt buộc nữa **. Làm cho nó trở thành giải pháp nhỏ gọn nhất. –
Cập nhật setup_environ là phải được loại bỏ trong django 1,6
Nếu bạn có thể nhập khẩu tập tin settings.py của bạn, sau đó take a look tại lệnh setup_environ tiện dụng.
from django.core.management import setup_environ
from mysite import settings
setup_environ(settings)
#here you can do everything you could in your project
Không được chấp nhận! setup_environ, Tôi sẽ nhớ các bạn –
Rất tiếc, cảm ơn bạn đã cập nhật –
Xem câu hỏi tiếp theo của tôi cho các lựa chọn thay thế: http://stackoverflow.com/questions/15048963/alternative-to-the-deprecated-setup-environ-for-one -off-django-scripts –
Tùy chọn cuối cùng mà không ai đề cập đến: custom ./manage.py
subcommand.
Đối với django 1.5 trên (nhiều cơ sở dữ liệu được hỗ trợ), cài đặt DATABASE cũng thay đổi. Bạn cần điều chỉnh câu trả lời trước cho ...
settings.configure(
DATABASES = { 'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'db_name',
'USER': 'db_usr',
'PASSWORD': 'db_pass',
'HOST': '',
'PORT': '',
}, },
TIME_ZONE = 'Europe/Luxembourg'
)
Đối với django 1.7, tôi đã sử dụng các bước sau để bắt đầu và chạy.
settings.py:
from django.conf import settings
settings.configure(
DATABASES={
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'name',
'USER': 'usr',
'PASSWORD': 'secret',
'HOST': '127.0.0.1',
'PORT': '5432',
},
},
TIME_ZONE='America/Montreal',
)
Trong tập tin chứa khởi động thói quen
import os
import django
import v10consolidator.settings
from myapp.models import *
os.environ.setdefault(
"DJANGO_SETTINGS_MODULE",
"myapp.settings"
)
django.setup()
import os, sys
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project_name.settings")
sys.path.append(os.path.abspath(os.path.join(BASE_DIR, os.pardir)))
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
from app.models import MyModel
- 1. Sử dụng cơ sở dữ liệu 'cũ' với django
- 2. Làm thế nào để sao chép cơ sở dữ liệu trong sử dụng cơ sở dữ liệu khác trong django?
- 3. Tải mẫu django từ cơ sở dữ liệu
- 4. Cấu hình nhiều cơ sở dữ liệu trong Django 1.2
- 5. Thay đổi bảng cơ sở dữ liệu ở Django
- 6. Django - So sánh mã mẫu với cơ sở dữ liệu
- 7. Django cơ sở dữ liệu runserver tùy chỉnh
- 8. Chia sẻ cơ sở dữ liệu giữa Twisted và Django
- 9. Nam + Django 1.4 Lỗi cơ sở dữ liệu
- 10. Sử dụng Django ORM get_or_create với nhiều cơ sở dữ liệu
- 11. Quản trị Django sử dụng API RESTful v.s. Cơ sở dữ liệu
- 12. Django: sử dụng ModelForm để chỉnh sửa mục nhập cơ sở dữ liệu hiện có
- 13. Giá trị gia tăng trong cơ sở dữ liệu django
- 14. Django: dọn dẹp bảng cơ sở dữ liệu phiên
- 15. Django là "không thể mở tệp cơ sở dữ liệu"
- 16. có một cơ sở dữ liệu riêng biệt cho django-admin trong django
- 17. Lỗi cơ sở dữ liệu ở Django khi sử dụng luồng
- 18. Django - hai dự án sử dụng cùng một cơ sở dữ liệu?
- 19. Kiểm tra Django để sử dụng cơ sở dữ liệu hiện có
- 20. Cơ sở dữ liệu Python KHÔNG sử dụng Django (cho Heroku)
- 21. Dự án Django sử dụng sai (cũ) cài đặt cơ sở dữ liệu
- 22. Django: sử dụng ForeignKeyRawIdWidget bên ngoài biểu mẫu quản trị
- 23. Sử dụng Mô hình và Biểu mẫu bên ngoài Django?
- 24. nhập csv dữ liệu vào cơ sở dữ liệu trong Django quản
- 25. Triển khai Django: Xử lý dữ liệu trong cơ sở dữ liệu
- 26. Cách sử dụng nhiều cơ sở dữ liệu trong ứng dụng Rails Sử dụng cơ sở dữ liệu
- 27. Django: Lấy dữ liệu từ cơ sở dữ liệu khác nhau
- 28. mà python web framework (django hoặc django-norel hoặc kim tự tháp) để sử dụng khi MongoDB được sử dụng làm cơ sở dữ liệu
- 29. từ cơ sở dữ liệu sử dụng?
- 30. Công cụ cơ sở dữ liệu nào để chọn cho ứng dụng Django?
xuất sắc nhất, chính xác những gì tôi đang tìm kiếm! –
Tôi có một đầu nối (gói) để kết nối với cơ sở dữ liệu Hive và tôi có thể nhập nó vào chương trình python và tìm nạp dữ liệu từ cơ sở dữ liệu Hive. Tôi đặt trình kết nối đó ở đâu, tức là, tôi đặt thư mục nào và tôi đặt tên cho DATABASE_ENGINE là gì? Cảm ơn trước. –
Chúng tôi cần thêm libs nào vào requirements.txt để có được điều này? –