我正在尝试从我的python代码连接到redshift。 我的pip安装:
psycopg2==2.6.1
redshift-sqlalchemy==0.4.1
SQLAlchemy==1.0.9
我的虚拟机有:
libpq-dev
python-psycopg2
但我还是得到了
engine = create_engine('redshift+psycopg2://{}:{}@{}'.format(username, password, url))
File "/opt/project/env/local/lib/python2.7/site-packages/sqlalchemy/engine/__init__.py", line 386, in create_engine
return strategy.create(*args, **kwargs)
File "/opt/project/env/local/lib/python2.7/site-packages/sqlalchemy/engine/strategies.py", line 51, in create
entrypoint = u._get_entrypoint()
File "/opt/project/env/local/lib/python2.7/site-packages/sqlalchemy/engine/url.py", line 131, in _get_entrypoint
cls = registry.load(name)
File "/opt/project/env/local/lib/python2.7/site-packages/sqlalchemy/util/langhelpers.py", line 205, in load
(self.group, name))
NoSuchModuleError: Can't load plugin: sqlalchemy.dialects:redshift.psycopg2
使用相同的配置,我可以从我的笔记本电脑(mac)运行,但在Linux上,我猜有些软件包仍然缺失?任何建议将不胜感激,谢谢!
答案 0 :(得分:6)
我发现一些教程将驱动程序列为:
ThisAddin.cs
...使用它时,我收到了那个错误:
NoSuchModuleError:无法加载插件:sqlalchemy.dialects:redshift.psycopg2
只需将其更改为:
postgres+psycopg2://
立即修复。
答案 1 :(得分:1)
获取NoSuchModule异常的一种骨头方式是db连接字符串的格式错误。在我的情况下,当我改变
时,我得到了这个错误DB_URI = 'postgresql://...'
到
DB_URI = 'pg8000://...'
但应该是:
DB_URI = 'postgresql+pg8000://
答案 2 :(得分:1)
我遇到了同样的问题,波纹管分辨率解决了它。
环境:
Python 3.7
Conda 4.6.14
依赖性:
sudo apt-get install python-pip
sudo apt-get install libpq-dev
pip install --user psycopg2
pip install --user sqlalchemy
pip install --user sqlalchemy-redshift
连接字符串:
connection_string = sa_url.URL(
drivername='postgresql+psycopg2',
username='admin',
password='admin',
host='redshiftone.********.us-west-2.redshift.amazonaws.com',
port='5439',
database='redshiftone')
答案 3 :(得分:0)
以下链接有助于使用psycopg2库通过Pythong连接到Redshift而不使用SQL alchemy依赖
http://sobhan06k.blogspot.in/2014/11/reach-redshift-using-python-library.html
答案 4 :(得分:0)
我遇到了同样的问题,当我删除__pycache__
包中的redshift_sqlalchemy
目录时,我解决了这个问题。
在我的案例中,转到你的网站包装是在我的virtualenv。
所以cdvirtualenv
和cd lib/python3.5/site-packages/redshift_sqlalchemy
最后rm __pycache__
。