سؤال

شركتي تستخدم Vertica. لدينا تطبيقات Python التي تتصل به مع PyoDBC. أقوم بمعظم تطوري على جهاز Mac (Snow Leopard) وللأسف لم تصدر Vertica برامج تشغيل ODBC لنظام التشغيل Mac. لديهم سائقي JDBC رغم ذلك. لا أعتقد أن التطور في Jython هو حل وسط جيد. هل هناك أي طريقة لاستخدام برامج تشغيل JDBC مع تطبيق ODBC؟ نوع من موصل ODBC؟

هل كانت مفيدة؟

المحلول

تحرير: يمكن العثور على تحديث لـ Vertica 5/6 https://github.com/serbaut/psycopg2

فيما يلي تصحيح لجعل PSYCOPG2 2.2.1 العمل مع Vertica 4.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};

نصائح أخرى

نعم ، هناك جسور ODBC-Over-JDBC. افتح الرابط, من بين أمور أخرى ، توفر واحدة لنظام التشغيل Mac OS.

اعتبارًا من Vertica 6 ، هناك برامج تشغيل ODBC الأصلية لـ Mac OS X المتاحة من https://my.vertica.com منفذ

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top