2016-05-20 6 views
1

Я пытаюсь написать пакет AMS Lambda Python, который будет подключаться к базе данных FileMaker через JDBC. Чтобы протестировать, я запустил экземпляр EC2 с AMI Lambda Linux и создал virtualenv (/ venv), в котором я тестирую. Я загрузил fmjdbc.jar в экземпляр, используя WinSCP в/venv/lib/fmjdbc.jar. Код использует JayDeBeApi, следуя примеру использования здесь: https://pypi.python.org/pypi/JayDeBeApi/#usageПодключиться к базе данных Filemaker с помощью JDBC, Python и JayDeBeApi

Мой код до сих пор является следующее:

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> 

Как я могу получить JDBC драйвер для чтения виртуальной средой Python? Я бы хотел, чтобы этот код работал в пакете Lambda, поэтому я надеюсь, что есть решение, которое может быть интегрировано в код Python, который будет многократно работать на вновь созданных серверах.

+0

код [JayDeBeApi документация] (https://pypi.python.org/pypi/JayDeBeApi/) говорит: «Если вы используете CPython убедитесь, что вы установили [JPype] (https: // PyPi. python.org/pypi/JPype1/). Вы это сделали? –

ответ

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) 
+0

Это работает, но только за одну итерацию подумала программа. Если я попытаюсь запустить тот же скрипт еще несколько минут спустя, я получаю следующую ошибку: 'Невозможно запустить JVM на native/common/jp_env.cpp: 78'. Любые идеи, почему это так? – user2752159