Просто попробуйте jython в первый раз, потому что что-то пришло на работу, которое подойдет для этого идеально для этого. Я предполагаю, что jython может подключать mysql jdbc с помощью драйвера mysql jdbc. После googling и чтения, однако у меня возникают проблемы, и кажется, что 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
любой совет?
спасибо
Добавьте mysql-connector-java-5.1.10-bin.jar в переменную среды CLASSPATH, а не только переменную среды JYTHONPATH.
Есть ли у вас права читать этот .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')