使用SQLAlchemy连接到Vertica数据库

使用SQLAlchemy连接到Vertica数据库,sqlalchemy,vertica,Sqlalchemy,Vertica,我正在尝试使用SQLAlchemy连接到Vertica数据库 我偶然发现并安装了Vertica方言。我还安装了pyodbc 使用的基础教程,我有以下代码片段:- from sqlalchemy import Column, DateTime, String, Integer, ForeignKey, func from sqlalchemy.orm import relationship, backref from sqlalchemy.ext.declarative import declar

我正在尝试使用SQLAlchemy连接到Vertica数据库

我偶然发现并安装了Vertica方言。我还安装了pyodbc

使用的基础教程,我有以下代码片段:-

from sqlalchemy import Column, DateTime, String, Integer, ForeignKey, func
from sqlalchemy.orm import relationship, backref
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker

Base = declarative_base()

class Department(Base):
    __tablename__ = 'department'
    id = Column(Integer, primary_key=True)
    name = Column(String)

engine = create_engine(sa.engine.url.URL(drivername='vertica+pyodbc',
       username='<username>',password='<password>',
       host='<host>',database='<db name>',))


session = sessionmaker()
session.configure(bind=engine)
Base.metadata.create_all(engine)
可以从其他客户端连接到数据库,因此凭据等都可以

我不确定是什么原因造成的-有人能帮忙吗


提前谢谢

SQLAlchemy正在使用unixODBC连接到Vertica。你需要

您应该能够连接这些参数。这就是我在上一个SQLAlchemy/Vertica项目中所做的工作。此外,如果这不起作用,我会确保它配置正确,并且您可以使用isql(unixODBC附带)进行连接

您也可以为DSN连接执行此操作:

engine = create_engine('vertica+pyodbc://username:password@mydsn')

这是为Ubuntu14.04设置的,假设您在
/opt/vertica/
中安装了驱动程序,并使用此Dockerfile中的HP vertica,并且已安装

/etc/vertica.ini

[Driver]
ErrorMessagesPath = /opt/vertica/lib64/
ODBCInstLib = /usr/lib/x86_64-linux-gnu/libodbcinst.so
DriverManagerEncoding=UTF-16
[ODBC Data Sources]
vertica = "My Database"

[verticadsn]
Description = My Database
Driver = /opt/vertica/lib64/libverticaodbc.so
Database = docker
Servername = 127.0.0.1
UID = dbadmin
PWD =
~/.odbc.ini

[Driver]
ErrorMessagesPath = /opt/vertica/lib64/
ODBCInstLib = /usr/lib/x86_64-linux-gnu/libodbcinst.so
DriverManagerEncoding=UTF-16
[ODBC Data Sources]
vertica = "My Database"

[verticadsn]
Description = My Database
Driver = /opt/vertica/lib64/libverticaodbc.so
Database = docker
Servername = 127.0.0.1
UID = dbadmin
PWD =
如果你做得很好,这个命令应该返回你的Vertica版本

engine = create_engine('vertica+pyodbc://dbadmin:@verticadsn')
engine.connect().scalar('select version()')

您需要下载并安装Really。您必须注册一个帐户。谢谢-我已经创建了DSN并拥有Vertica驱动程序。假设它被称为“test”,您如何在“create_engine”调用中引用它?我想它在那里被引用了。你能分享你的DNS设置吗?我试图按照链接中的说明操作,但运气不佳。@Marigold您收到的错误消息是什么?你能通过isql连接吗?Thanks@woot,我设法通过互联网上的教程把它整合到一起。添加了另一个答案,以防有人遇到同样的问题。我认为在
engine=create\u engine('vertica')中编写
dbadmin:
+pyodbc://dbadmin:@verticadsn')
覆盖.odbc.ini文件中的UID和PWD
engine=create_engine('vertica+pyodbc://@verticadsn')
工作正常
engine = create_engine('vertica+pyodbc://dbadmin:@verticadsn')
engine.connect().scalar('select version()')