簡體   English   中英

如何在Django中訪問遠程PostgreSQL數據庫服務器(只讀事務)?

[英]How to access a remote PostgreSQL database server (Read only transaction) in Django?

我有一個PostgreSQL數據庫服務器,它是只讀事務。 我需要從Django這個數據庫中提取一些內容。 我的setting.py文件如下:

{
  {
    DATABASES = {
      'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'supercaller',
        'USER' : 'chandra_m',
        'PASSWORD' : 'XXXXX',
        'HOST': 'xx.xxx.xxx.xxx',
        'PORT': '5432',
      }
    }
  }
}

我正在使用python manage.py runserver運行服務器。 我收到以下錯誤

  System check identified no issues (0 silenced).
  Unhandled exception in thread started by <function wrapper at 0x1aa9230>
  Traceback (most recent call last):
   File "/home/birendra/knowlarity/chandra/NodetoDjango/venv/local/lib/python2.7/site-   
   packages/django/utils/autoreload.py", line 222, in wrapper
   fn(*args, **kwargs)
  File "/home/birendra/knowlarity/chandra/NodetoDjango/venv/local/lib/python2.7/site - 
  packages/django/core/management/commands/runserver.py", line 107, in inner_run
    self.check_migrations()
  File "/home/birendra/knowlarity/chandra/NodetoDjango/venv/local/lib/python2.7/site-
  packages/django/core/management/commands/runserver.py", line 159, in check_migrations
    executor = MigrationExecutor(connections[DEFAULT_DB_ALIAS])
  File "/home/birendra/knowlarity/chandra/NodetoDjango/venv/local/lib/python2.7/site-
  packages/django/db/migrations/executor.py", line 17, in __init__
    self.loader = MigrationLoader(self.connection)
  File "/home/birendra/knowlarity/chandra/NodetoDjango/venv/local/lib/python2.7/site-
  packages/django/db/migrations/loader.py", line 48, in __init__
    self.build_graph()
  File "/home/birendra/knowlarity/chandra/NodetoDjango/venv/local/lib/python2.7/site-
  packages/django/db/migrations/loader.py", line 179, in build_graph
    self.applied_migrations = recorder.applied_migrations()
  File "/home/birendra/knowlarity/chandra/NodetoDjango/venv/local/lib/python2.7/site-
  packages/django/db/migrations/recorder.py", line 59, in applied_migrations
    self.ensure_schema()
  File "/home/birendra/knowlarity/chandra/NodetoDjango/venv/local/lib/python2.7/site-
  packages/django/db/migrations/recorder.py", line 53, in ensure_schema
    editor.create_model(self.Migration)
  File "/home/birendra/knowlarity/chandra/NodetoDjango/venv/local/lib/python2.7/site-
  packages/django/db/backends/schema.py", line 270, in create_model
    self.execute(sql, params)
  File "/home/birendra/knowlarity/chandra/NodetoDjango/venv/local/lib/python2.7/site-
  packages/django/db/backends/schema.py", line 98, in execute
    cursor.execute(sql, params)
  File "/home/birendra/knowlarity/chandra/NodetoDjango/venv/local/lib/python2.7/site- 
  packages/django/db/backends/utils.py", line 81, in execute
    return super(CursorDebugWrapper, self).execute(sql, params)
  File "/home/birendra/knowlarity/chandra/NodetoDjango/venv/local/lib/python2.7/site-
  packages/django/db/backends/utils.py", line 65, in execute
    return self.cursor.execute(sql, params)
  File "/home/birendra/knowlarity/chandra/NodetoDjango/venv/local/lib/python2.7/site- 
  packages/django/db/utils.py", line 94, in __exit__
    six.reraise(dj_exc_type, dj_exc_value, traceback)
  File "/home/birendra/knowlarity/chandra/NodetoDjango/venv/local/lib/python2.7/site-
  packages/django/db/backends/utils.py", line 65, in execute
    return self.cursor.execute(sql, params)
  django.db.utils.InternalError: cannot execute CREATE TABLE in a read-only transaction

但是,我能夠通過shell提示符使用以下命令訪問此數據庫服務器:

psql -h 46.xxx.xxx.52 supercaller chandra_m

如何解決錯誤?

您需要確保您的會話未使用數據庫(默認)。 我會考慮將“默認”保留為可寫的數據庫,然后添加“只讀”數據庫連接作為您在其中訪問的對象的替代連接。

首先,您的日志說,您的遷移不適用於您要連接的數據庫,因此請首先對其進行修復。

然后,我在settings.py SESSION_ENGINE="django.contrib.sessions.backends.cache"成功完成了以下操作

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM