代码之家  ›  专栏  ›  技术社区  ›  Nick Retallack

使用带有JDBC驱动程序的ODBC应用程序

  •  3
  • Nick Retallack  · 技术社区  · 14 年前

    我公司使用 Vertica . 我们有用pyodbc连接到它的python应用程序。我的大部分开发工作都是在Mac(雪豹)上完成的,不幸的是Vertica还没有发布Mac的ODBC驱动程序。不过,他们确实有JDBC驱动程序。我不认为在Jython发展是一个好的折衷办法。有没有办法将JDBC驱动程序与ODBC应用程序一起使用?某种类型的ODBC连接器?

    3 回复  |  直到 11 年前
        1
  •  4
  •   serbaut    11 年前

    编辑:可以在此处找到Vertica 5/6的更新 https://github.com/serbaut/psycopg2

    这里有一个补丁可以让psycopg2 2.2.1与Vertica4.0一起工作。不需要ODBC。

    diff --git a/psycopg/connection_int.c b/psycopg/connection_int.c
    index 902fdbb..b07eee8 100644
    --- a/psycopg/connection_int.c
    +++ b/psycopg/connection_int.c
    @@ -280,6 +280,10 @@ conn_setup(connectionObject *self, PGconn *pgconn)
             pgres = psyco_exec_green(self, psyco_datestyle);
         }
    
    +    if (self->server_version == 0 && self->protocol == 3) { /* vertica */
    +      self->encoding = strdup("UTF8");
    +      self->isolation_level = 0;
    +    } else {
         if (pgres == NULL || PQresultStatus(pgres) != PGRES_COMMAND_OK ) {
             PyErr_SetString(OperationalError, "can't set datestyle to ISO");
             IFCLEARPGRES(pgres);
    @@ -335,7 +339,7 @@ conn_setup(connectionObject *self, PGconn *pgconn)
             return -1;
         }
         self->isolation_level = conn_get_isolation_level(pgres);
    -
    +    }
         Py_UNBLOCK_THREADS;
         pthread_mutex_unlock(&self->lock);
         Py_END_ALLOW_THREADS;
    diff --git a/psycopg/typecast_builtins.c b/psycopg/typecast_builtins.c
    index e8e5a1a..45b9dbc 100644
    --- a/psycopg/typecast_builtins.c
    +++ b/psycopg/typecast_builtins.c
    @@ -1,15 +1,15 @@
     static long int typecast_NUMBER_types[] = {20, 23, 21, 701, 700, 1700, 0};
    -static long int typecast_LONGINTEGER_types[] = {20, 0};
    +static long int typecast_LONGINTEGER_types[] = {6, 20, 0};
     static long int typecast_INTEGER_types[] = {23, 21, 0};
    -static long int typecast_FLOAT_types[] = {701, 700, 0};
    -static long int typecast_DECIMAL_types[] = {1700, 0};
    -static long int typecast_UNICODE_types[] = {19, 18, 25, 1042, 1043, 0};
    +static long int typecast_FLOAT_types[] = {7, 701, 700, 0};
    +static long int typecast_DECIMAL_types[] = {16, 1700, 0};
    +static long int typecast_UNICODE_types[] = {8, 9, 19, 18, 25, 1042, 1043, 0};
     static long int typecast_STRING_types[] = {19, 18, 25, 1042, 1043, 0};
    -static long int typecast_BOOLEAN_types[] = {16, 0};
    -static long int typecast_DATETIME_types[] = {1114, 1184, 704, 1186, 0};
    -static long int typecast_TIME_types[] = {1083, 1266, 0};
    -static long int typecast_DATE_types[] = {1082, 0};
    -static long int typecast_INTERVAL_types[] = {704, 1186, 0};
    +static long int typecast_BOOLEAN_types[] = {5, 0};
    +static long int typecast_DATETIME_types[] = {12, 13, 1114, 1184, 704, 1186, 0};
    +static long int typecast_TIME_types[] = {11, 15, 1083, 1266, 0};
    +static long int typecast_DATE_types[] = {10, 1082, 0};
    +static long int typecast_INTERVAL_types[] = {14, 704, 1186, 0};
     static long int typecast_BINARY_types[] = {17, 0};
     static long int typecast_ROWID_types[] = {26, 0};
     static long int typecast_LONGINTEGERARRAY_types[] = {1016, 0};
    
        2
  •  1
  •   Matthew Flaschen    14 年前

    是的,JDBC桥上有ODBC。 OpenLink 除其他外,还为Mac OS提供了一个。

        3
  •  0
  •   bpanulla    11 年前

    从Vertica 6开始,Mac OS X的本机ODBC驱动程序可从 https://my.vertica.com 门户