2017-04-06 114 views
0

我正在創建一個腳本,它將從mysql服務器獲取數據並使用Jasypt解密文本,這是一個用於encrpyt /解密文本的java庫。所以我必須使用Jython來做到這一點。無法使用Jython和mysql.connector模塊連接到mysql數據庫

我能夠從Jasypt庫導入java類。我也能夠將mysql.connector導入Jython腳本。但腳本無法連接到mysql服務器。

這裏是我正努力

import sys 
SYSPATH = ['/usr/local/lib/python2.7/site-packages', '/data/packages/jasypt-1.9.2.jar'] 
[sys.path.append(p) for p in SYSPATH] 
import mysql.connector 

# adding this to avoid "AttributeError: socket.SOL_TCP does not exist" listed at https://github.com/pika/pika/issues/67 
import socket 
socket.SOL_TCP = socket.IPPROTO_TCP 

# This line is giving error "TypeError: unpack_from(): 2nd arg can't be coerced to String" 
con = mysql.connector.connect(user='username', password='password', host='192.168.123.123', database='users') 

最後一行代碼gving我錯誤

File "2017-04-05-get-bank-sms.py", line 11, in createUserIdUuidMap 
    con = mysql.connector.connect(user='username', password='password', host='192.168.123.123', database='users') 
File "/usr/local/lib/python2.7/site-packages/mysql/connector/__init__.py", line 179, in connect 
    return MySQLConnection(*args, **kwargs) 
File "/usr/local/lib/python2.7/site-packages/mysql/connector/connection.py", line 95, in __init__ 
    self.connect(**kwargs) 
File "/usr/local/lib/python2.7/site-packages/mysql/connector/abstracts.py", line 719, in connect 
    self._open_connection() 
File "/usr/local/lib/python2.7/site-packages/mysql/connector/connection.py", line 207, in _open_connection 
    self._do_handshake() 
File "/usr/local/lib/python2.7/site-packages/mysql/connector/connection.py", line 99, in _do_handshake 
    packet = self._socket.recv() 
File "/usr/local/lib/python2.7/site-packages/mysql/connector/network.py", line 235, in recv_plain 
    payload_len = struct.unpack_from(
File "/usr/local/lib/python2.7/site-packages/mysql/connector/network.py", line 235, in recv_plain 
    payload_len = struct.unpack_from(
TypeError: unpack_from(): 2nd arg can't be coerced to String 

是否有可能我想做?

+0

我懷疑'192.168.321.123'是一個有效的IP-地址... –

+1

哦......這不是真正的IP在這裏發佈。我已將其更正爲有效的IP。謝謝 :) –

回答

1

根據其他相關問題,似乎最常見的方法是使用「MySQL Connector/J」(JDBC驅動程序)而不是「MySQL Connector/Python」。我可以證實,這Jython代碼工程...

from com.ziclix.python.sql import zxJDBC 

connectionUrl = "jdbc:mysql://localhost:3307" 
cnxn = zxJDBC.connect(
     connectionUrl, 
     "root", 
     "mypassword", 
     "com.mysql.jdbc.Driver") 
crsr = cnxn.cursor() 
crsr.execute("SHOW DATABASES") 
rows = crsr.fetchall() 
print(rows) 

...當我運行它使用以下批處理文件:

SET CLASSPATH=C:\Users\gord\.m2\repository\mysql\mysql-connector-java\5.1.41\mysql-connector-java-5.1.41.jar 
C:\jython2.7.0\bin\jython mysql_test.py