簡體   English   中英

Vertica Python 連接

[英]Vertica Python Connection

我正在嘗試通過 Python 連接到 Vertica 數據庫。 這是我到目前為止所擁有的。

使用vertica_python

! pip install vertica_python
from vertica_python import connect
conn_info = {'host': '192.168...',
             'port': my_port_number,
             'user': 'my_uid',
             'password': 'my_pwd',
             'database': 'my_dbname',
             # 10 minutes timeout on queries
             'read_timeout': 600,
             # default throw error on invalid UTF-8 results
             'unicode_error': 'strict',
             # SSL is disabled by default
             'ssl': False}
connection = vertica_python.connect(**conn_info)

給出以下錯誤:

---------------------------------------------------------------------------
ConnectionError                           Traceback (most recent call last)
<ipython-input-3-629986180e1e> in <module>()
----> 1 connection = connect(host = "192.168...", port = my_port_number, user = 'my_uid', password ='my_pwd', database = 'my_dbname')

/Users/MyUserName/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/vertica_python/__init__.pyc in connect(**kwargs)
     28 def connect(**kwargs):
     29     """Opens a new connection to a Vertica database."""
---> 30     return Connection(kwargs)

/Users/MyUserName/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/vertica_python/vertica/connection.pyc in __init__(self, options)
     36         self.options.setdefault('port', 5433)
     37         self.options.setdefault('read_timeout', 600)
---> 38         self.startup_connection()
     39 
     40     def __enter__(self):

/Users/MyUserName/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/vertica_python/vertica/connection.pyc in startup_connection(self)
    255 
    256         while True:
--> 257             message = self.read_message()
    258 
    259             if isinstance(message, messages.Authentication):

/Users/MyUserName/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/vertica_python/vertica/connection.pyc in read_message(self)
    190                     "Bad message size: {0}".format(size)
    191                 )
--> 192             message = BackendMessage.factory(type_, self.read_bytes(size - 4))
    193             logger.debug('<= %s', message)
    194             return message

/Users/MyUserName/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/vertica_python/vertica/connection.pyc in read_bytes(self, n)
    242             bytes_ = self._socket().recv(n - len(results))
    243             if not bytes_:
--> 244                 raise errors.ConnectionError("Connection closed by Vertica")
    245             results = results + bytes_
    246         return results

ConnectionError: Connection closed by Vertica

使用jaydebeapi會產生不同的錯誤:

! pip install jaydebeapi
import jaydebeapi
connection = jaydebeapi.connect('com.vertica.Driver', ['jdbc:vertica://...','my_uid','my_pwd'], '/Users/MyUserName/Documents/JAR Files/vertica-jdbc-4.1.14.jar')
RuntimeError: Unable to load DLL [/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Libraries/libjvm.dylib], error = dlopen(/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Libraries/libjvm.dylib, 9): no suitable image found.  Did find:
/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Libraries/libjvm.dylib: mach-o, but wrong architecture at native/common/include/jp_platform_linux.h:45 

最后,我嘗試了pyodbc但我什至無法導入它:

! pip install pyodbc
import pyodbc
ImportError: dlopen(/Users/MyUserName/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/pyodbc.so, 2): Library not loaded: /usr/local/lib/libodbc.2.dylib
  Referenced from: /Users/MyUserName/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/pyodbc.so
  Reason: image not found 

我是 Python 的新手,所以非常感謝任何幫助

您可以像在 Python 中那樣傳遞鍵/值對。

使用方法如下:

from vertica_python import connect
connection = connect(
    host='jdbc:vertica://...',
    port=my_port_number,
    user='my_uid',
    password='my_pwd'
    )

這對我有用(更改您的 IP 和端口、數據庫、用戶和密碼),

import vertica_python
conn_info = {'host': '192.168.1.42', 'port': 5543, 'database': 'mydb',
    'user': 'me', 'password': '123',
    'read_timeout': 600, 'unicode_error': 'strict', 'ssl': False}
print conn_info #check that your information is correct
connection = vertica_python.connect(**conn_info)

如果您想與pyodbc連接,您的驅動程序在cat /etc/odbc.ini部分中可見:

import pyodbc

cnxn = pyodbc.connect ("DRIVER = {HPVertica}; SERVER = 192.168.20.10; PORT = 5433; DATABASE = mydb; UID = myuser; PWD = mypassword")

或者如果你想使用vertica_python ,你可以按如下方式連接:

import vertica_python

conn_info = {'host': '192.168.20.10',
              'port': 5433,
              'user': 'myuser',
              'password': 'mypassword',
              'database': 'mydb',
              # default throw error on invalid UTF-8 results
              'unicode_error': 'strict',
              'connection_load_balance': True
              }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM