A quick question... I'm using Jython to do some tasks, and I need to access some MySQL Databases... I've found a MySQL Database Connector for Python2.5; it doesn't come with the jython/python installation (it's 3rd party). I've placed the module's folder in the same directory as my main.py, but when I launch it, it tells me that it can't find the module. I've done this before in Python3.2 for importing and I thought it would work the same.
Can Jython import non-standard python modules? -- Note I can import Java classes just fine.
Here is the Error (Yes, this is for Minecraft):
20:50:44 [SEVERE] org.bukkit.plugin.InvalidPluginException: Traceback (most recent call last):
File "<iostream>", line 10, in <module>
ImportError: No module named PyDbLite
20:50:44 [SEVERE] at net.lahwran.bukkit.jython.PythonPluginLoader.loadPlugin(PythonPluginLoader.java:280)
20:50:44 [SEVERE] at net.lahwran.bukkit.jython.PythonPluginLoader.loadPlugin(PythonPluginLoader.java:113)
20:50:44 [SEVERE] at net.lahwran.bukkit.jython.PythonPluginLoader.loadPlugin(PythonPluginLoader.java:83)
20:50:44 [SEVERE] at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.java:305)
20:50:44 [SEVERE] at com.master.bukkit.python.PythonLoader.onLoad(PythonLoader.java:58)
20:50:44 [SEVERE] at org.bukkit.craftbukkit.CraftServer.loadPlugins(CraftServer.java:212)
20:50:44 [SEVERE] at org.bukkit.craftbukkit.CraftServer.<init>(CraftServer.java:183)
20:50:44 [SEVERE] at net.minecraft.server.ServerConfigurationManager.<init>(ServerConfigurationManager.java:53)
20:50:44 [SEVERE] at net.minecraft.server.MinecraftServer.init(MinecraftServer.java:156)
20:50:44 [SEVERE] at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:422)
20:50:44 [SEVERE] at net.minecraft.server.ThreadServerApplication.run(SourceFile:492)
20:50:44 [SEVERE] Caused by: Traceback (most recent call last):
File "<iostream>", line 10, in <module>
ImportError: No module named PyDbLite
20:50:44 [SEVERE] at org.python.core.PyException.fillInStackTrace(PyException.java:70)
20:50:44 [SEVERE] at java.lang.Throwable.<init>(Throwable.java:181)
20:50:44 [SEVERE] at java.lang.Exception.<init>(Exception.java:29)
20:50:44 [SEVERE] at java.lang.RuntimeException.<init>(RuntimeException.java:32)
20:50:44 [SEVERE] at org.python.core.PyException.<init>(PyException.java:46)
20:50:44 [SEVERE] at org.python.core.PyException.<init>(PyException.java:43)
20:50:44 [SEVERE] at org.python.core.PyException.<init>(PyException.java:61)
20:50:44 [SEVERE] at org.python.core.Py.ImportError(Py.java:290)
20:50:44 [SEVERE] at org.python.core.imp.import_first(imp.java:750)
20:50:44 [SEVERE] at org.python.core.imp.import_name(imp.java:834)
20:50:44 [SEVERE] at org.python.core.imp.importName(imp.java:884)
20:50:44 [SEVERE] at org.python.core.ImportFunction.__call__(__builtin__.java:1220)
20:50:44 [SEVERE] at org.python.core.PyObject.__call__(PyObject.java:357)
20:50:44 [SEVERE] at org.python.core.__builtin__.__import__(__builtin__.java:1173)
20:50:44 [SEVERE] at org.python.core.imp.importOne(imp.java:903)
20:50:44 [SEVERE] at org.python.pycode._pyx5.f$0(<iostream>:52)
20:50:44 [SEVERE] at org.python.pycode._pyx5.call_function(<iostream>)
20:50:44 [SEVERE] at org.python.core.PyTableCode.call(PyTableCode.java:165)
20:50:44 [SEVERE] at org.python.core.PyCode.call(PyCode.java:18)
20:50:44 [SEVERE] at org.python.core.Py.runCode(Py.java:1261)
20:50:44 [SEVERE] at org.python.util.PythonInterpreter.execfile(PythonInterpreter.java:235)
20:50:44 [SEVERE] at org.python.util.PythonInterpreter.execfile(PythonInterpreter.java:230)
20:50:44 [SEVERE] at net.lahwran.bukkit.jython.PythonPluginLoader.loadPlugin(PythonPluginLoader.java:239)
20:50:44 [SEVERE] ... 10 more
jython can import non-standard python modules if they are pure python. database connections are typically cpython modules. For database connectivity, see zxJDBC It makes any jdbc connectivity available to java behave in the standard python DBI 2.0 kind of way.
Best of both worlds!
Since you are using jython, use the mysql connector/J jar. Download it, add it to your CLASSPATH, and make sure your user executing the code has read permissions to the location where the jar is.
Once you have the jar, follow the documentation for sample code.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With