簡體   English   中英

PostgreSQL Psycopg2

[英]Postgresql Psycopg2

我是一個總編程n00b,剛剛開始學習django。 我已經可以使用SQLite完成工作,但是我對PostgreSQL卻完全陷入了停頓……我已經在Stackoverflow和其他地方尋找了幾個小時,卻找不到一個好的答案。

我的settings.py文件:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'mydb',
        'USER': 'user',
        'PASSWORD': 'passwd',
        'HOST': 'localhost',
        'PORT': '',
}

}

在終端中運行命令:

$ python manage.py validate    

終端輸出:

Traceback (most recent call last):
File "manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/management/__init__.py", line 443, in execute_from_command_line
utility.execute()
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/management/__init__.py", line 382, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/management/base.py", line 196, in run_from_argv
self.execute(*args, **options.__dict__)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/management/base.py", line 232, in execute
output = self.handle(*args, **options)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/management/base.py", line 371, in handle
return self.handle_noargs(**options)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/management/commands/validate.py", line 9, in handle_noargs
self.validate(display_num_errors=True)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/management/base.py", line 266, in validate
num_errors = get_validation_errors(s, app)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/management/validation.py", line 23, in get_validation_errors
from django.db import models, connection
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/__init__.py", line 40, in <module>
backend = load_backend(connection.settings_dict['ENGINE'])
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/__init__.py", line 34, in __getattr__
return getattr(connections[DEFAULT_DB_ALIAS], item)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/utils.py", line 92, in __getitem__
backend = load_backend(db['ENGINE'])
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/utils.py", line 24, in load_backend
return import_module('.base', backend_name)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/utils/importlib.py", line 35, in import_module
__import__(name)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/base.py", line 13, in <module>
from django.db.backends.postgresql_psycopg2.creation import DatabaseCreation
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/creation.py", line 1, in <module>
import psycopg2.extensions
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/psycopg2/__init__.py", line 67, in <module>
from psycopg2._psycopg import BINARY, NUMBER, STRING, DATETIME, ROWID
ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/psycopg2/_psycopg.so, 2): Symbol not found: _PQbackendPID
Referenced from: /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/psycopg2/_psycopg.so
Expected in: dynamic lookup

默認情況下,psycopg2將不會在OSX上正確編譯。

維護者建議您盡可能使用Fink或Macports的版本( http://initd.org/psycopg/install/ )。

如果您想/需要從源代碼安裝,他們提供了以下鏈接來解決常見問題: http : //initd.org/psycopg/articles/2010/11/11/links-about-building-psycopg-mac-os -X/

IIRC,解決此問題的最佳方法是:

  • 設置環境變量,以確保如果您執行pip / easy_install(它包含要針對其構建的PostgreSQL客戶端/服務器的所有配置信息),或者在setup.cfg中手動記錄,則確保它們選擇正確的pg_config二進制文件建立。

  • 設置環境變量以為您的osx安裝顯式設置正確的ARCHFLAGS。 有時python會嘗試在32位安裝上構建64位,反之亦然。

  • 新安裝使人們遇到libssl的問題,但我從未遇到過

讀取錯誤后,我認為這不是psycopg2未安裝但由於無法正確加載而導致的情況。 這里不對勁。

我將確保您已安裝libpq(PostgreSQL客戶端庫),以及相關的頭文件。 那么我將刪除psycopg2並嘗試再次安裝。

如果失敗,請確保頭文件與您安裝的libpq版本相同。 似乎您遇到了預期的符號導出不存在的問題,這表明可能存在庫版本控制問題。

暫無
暫無

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

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