使用JDBC,Python和JayDeBeApi连接到Filemaker数据库

时间:2016-05-20 20:42:03

标签: python linux jdbc lambda jaydebeapi

我正在尝试编写将通过JDBC连接到FileMaker数据库的AWS Lambda Python包。为了测试,我已经使用Lambda Linux AMI启动了一个EC2实例,并创建了一个我正在测试的virtualenv(/ venv)。我已经使用WinSCP将fmjdbc.jar上传到了实例到/venv/lib/fmjdbc.jar。该代码使用JayDeBeApi,遵循此处的用法示例:https://pypi.python.org/pypi/JayDeBeApi/#usage

到目前为止,我的代码如下:

import jaydebeapi as jdb

driverclass = 'com.filemaker.jdbc.Driver'
jdbcURL = 'jdbc:filemaker://url:port;database'


jar = '/home/ec2-user/lambda-test-project/venv/lib/fmjdbc.jar'
print jar

conn = jdb.connect(driverclass,[jdbcURL,'username','password'],jar)

这给了我错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/ec2-user/lambda-test-project/venv/local/lib/python2.7/site-package                                               s/jaydebeapi/__init__.py", line 359, in connect
    jconn = _jdbc_connect(jclassname, jars, libs, *driver_args)
  File "/home/ec2-user/lambda-test-project/venv/local/lib/python2.7/site-package                                               s/jaydebeapi/__init__.py", line 183, in _jdbc_connect_jpype
    return jpype.java.sql.DriverManager.getConnection(*driver_args)
jpype._jexception.SQLExceptionPyRaisable: java.sql.SQLException: No suitable driver found for jdbc:filemaker://<MY URL STUFF IS HERE>

如何让Python的虚拟环境读取jdbc驱动程序?我希望这个代码最终能够在Lambda包中运行,所以我希望有一个可以集成到Python代码中的解决方案,它将在新创建的服务器上重复工作。

1 个答案:

答案 0 :(得分:0)

您可以使用jpype包为python设置驱动程序。之前我用它来连接Oracle DB。我的示例代码可能对您有用。

import jaydebeapi,jpype

classpath = "your jdbc jar driver path" 

jvm_path = "/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.36.x86_64/jre/lib/amd64/server/libjvm.so" #your java vm path

jpype.startJVM(jvm_path, "-Djava.class.path=%s" % classpath) #start jvm based on the driver

conn = jaydebeapi.connect(xxxxxx)