Jython & Mysql - какова практика подключения? - PullRequest
0 голосов
/ 03 февраля 2010

Просто пробую jython в первый раз, потому что на работе появилось что-то подходящее для этого.Я предполагаю, что jython может установить соединение mysql jdbc с помощью драйвера mysql jdbc.Однако после поиска в Google и чтения у меня возникли проблемы, и это кажется специфичным для jython и, вероятно, простым.так что я делаю Jython:

Jython 2.5.1 (Release_2_5_1:6813, Sep 26 2009, 13:47:54) 
[Java HotSpot(TM) 64-Bit Server VM (Apple Inc.)] on java1.6.0_17
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> print sys.path
['', '/JYTHONPATH/mysql-connector-java-5.1.10-bin.jar', '/WorkArea/Apps/jython/jython2.5.1/Lib', '__classpath__', '__pyclasspath__/', '/WorkArea/Apps/jython/jython2.5.1/Lib/site-packages']
>>>

код я бегу

from java.lang import *
from java.sql import *
driverName="com.mysql.jdbc.Driver"
Class.forName(driverName)
url = "jdbc:mysql://localhost/test?user=jgreenaw&password="
con = DriverManager.getConnection(url)
stmt = con.createStatement() 

выход

riux:Desktop$ jython pymysql.py 
Traceback (most recent call last):
  File "pymysql.py", line 7, in <module>
    Class.forName(driverName)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:315)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:330)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:250)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:398)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:169)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)

java.lang.ClassNotFoundException: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

любой совет?

спасибо

Ответы [ 2 ]

2 голосов
/ 07 ноября 2010

Добавьте mysql-connector-java-5.1.10-bin.jar к переменной среды CLASSPATH, а не только к переменной среды JYTHONPATH.

2 голосов
/ 04 февраля 2010

У вас есть права на чтение этого .jar? В вашем коде попробуйте открыть его как файл. Также проверьте, является ли этот файл действительным jar архивом, который содержит com/mysql/jdbc/Driver.class.

Пока я использую PostgreSQL в Windows, я могу проверить это с помощью:

import zipfile

def test_jar(jar_file, class_name):
    zf = zipfile.ZipFile(jar_file, 'r')
    cn = class_name.replace('.', '/') + '.class'
    zi = zf.getinfo(cn)
    print('%s: %s [b] -> %s [b]' % (zi.filename, zi.file_size, zi.compress_size))

test_jar('c:/jars/postgresql-8.3-603.jdbc4.jar', 'org.postgresql.Driver')
...