tutorial tables quick query not guide español create sqlalchemy vertica

tables - Conexión a la base de datos de Vertica con SQLAlchemy



sqlalchemy query (2)

SQLAlchemy está usando unixODBC para conectarse a Vertica. Necesita instalar los controladores y configurar un DSN

Debería poder conectarse con estos parámetros. Esto es lo que funcionó para mí en mi proyecto anterior SQLAlchemy / Vertica. Además, si esto no funciona, me aseguraré de que esté configurado correctamente y de que pueda conectarse utilizando isql (viene con unixODBC).

drivername=''vertica+pyodbc'', username=''myuser'', password=''mypassword'', host=''hostname'', database=''DBNAME'',

También puede hacer esto para una conexión DSN:

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

Estoy intentando conectarme a una base de datos de Vertica usando SQLAlchemy.

Encontré e instalé un dialecto de Vertica en https://github.com/jamescasbon/vertica-sqlalchemy . También he instalado pyodbc.

Usando un tutorial básico en http://www.pythoncentral.io/sqlalchemy-orm-examples/ , tengo el siguiente fragmento de código: -

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)

Cuando esto funciona, obtengo el traceback: -

Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/schema.py", line 3291, in create_all tables=tables) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1546, in _run_visitor with self._optional_conn_ctx_manager(connection) as conn: File "/usr/lib/python2.7/contextlib.py", line 17, in __enter__ return self.gen.next() File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1539, in _optional_conn_ctx_manager with self.contextual_connect() as conn: File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1729, in contextual_connect self.pool.connect(), File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 332, in connect return _ConnectionFairy._checkout(self) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 626, in _checkout fairy = _ConnectionRecord.checkout(pool) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 433, in checkout rec = pool._do_get() File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 945, in _do_get return self._create_connection() File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 278, in _create_connection return _ConnectionRecord(self) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 404, in __init__ self.connection = self.__connect() File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 527, in __connect connection = self.__pool._creator() File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/strategies.py", line 95, in connect connection_invalidated=invalidated File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 185, in raise_from_cause reraise(type(exception), exception, tb=exc_tb) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/strategies.py", line 89, in connect return dialect.connect(*cargs, **cparams) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 376, in connect return self.dbapi.connect(*cargs, **cparams) sqlalchemy.exc.DBAPIError: (Error) (''IM002'', ''[IM002] [unixODBC][Driver Manager]Data source name not found, and no default driver specified (0) (SQLDriverConnect)'') None None

La última línea, supongo, es la que hay que mirar:

sqlalchemy.exc.DBAPIError: (Error) (''IM002'', ''[IM002] [unixODBC][Driver Manager]Data source name not found, and no default driver specified (0) (SQLDriverConnect)'') None None

Se pueden hacer conexiones a la base de datos desde otros clientes para que las credenciales, etc. estén bien.

No estoy seguro de qué está causando esto, ¿alguien puede ayudar?

¡Gracias por adelantado!


Esto está configurado para Ubuntu 14.04 suponiendo que tiene un controlador instalado en /opt/vertica/ y usando HP Vertica desde este Dockerfile https://hub.docker.com/r/sumitchawla/vertica/ y tiene https://github.com / jamescasbon / vertica-sqlalchemy .

/etc/vertica.ini

[Driver] ErrorMessagesPath = /opt/vertica/lib64/ ODBCInstLib = /usr/lib/x86_64-linux-gnu/libodbcinst.so DriverManagerEncoding=UTF-16

~ / .odbc.ini

[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 =

Si hiciste todo bien, este comando debería devolver tu versión de Vertica

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