Solr’s JDBC driver supports Python and Jython.
Python Python supports accessing JDBC using the JayDeBeApi library. The CLASSPATH variable must be configured to contain the solr-solrj jar and the supporting solrj-lib jars.
JayDeBeApi run.sh
#!/usr/bin/env bash
# Java must already be installed
pip install JayDeBeApi
export CLASSPATH = " $( echo $( ls /opt/solr/dist/solr-solrj* /opt/solr/dist/solrj-lib/*) | tr ' ' ':' ) "
python solr_jaydebeapi.py
solr_jaydebeapi.py
#!/usr/bin/env python
# https://pypi.python.org/pypi/JayDeBeApi/
import jaydebeapi
import sys
if __name__ == '__main__' :
jdbc_url = "jdbc:solr://localhost:9983?collection=test"
driverName = "org.apache.solr.client.solrj.io.sql.DriverImpl"
statement = "select fielda, fieldb, fieldc, fieldd_s, fielde_i from test limit 10"
conn = jaydebeapi . connect ( driverName , jdbc_url )
curs = conn . cursor ()
curs . execute ( statement )
print ( curs . fetchall ())
conn . close ()
sys . exit ( 0 )
Jython Jython supports accessing JDBC natively with Java interfaces or with the zxJDBC library. The CLASSPATH variable must be configured to contain the solr-solrj jar and the supporting solrj-lib jars.
run.sh
#!/usr/bin/env bash
# Java and Jython must already be installed
export CLASSPATH = " $( echo $( ls /opt/solr/dist/solr-solrj* /opt/solr/dist/solrj-lib/*) | tr ' ' ':' ) "
jython [ solr_java_native.py | solr_zxjdbc.py]
Java Native solr_java_native.py
#!/usr/bin/env jython
# http://www.jython.org/jythonbook/en/1.0/DatabasesAndJython.html
# https://wiki.python.org/jython/DatabaseExamples#SQLite_using_JDBC
import sys
from java.lang import Class
from java.sql import DriverManager , SQLException
if __name__ == '__main__' :
jdbc_url = "jdbc:solr://localhost:9983?collection=test"
driverName = "org.apache.solr.client.solrj.io.sql.DriverImpl"
statement = "select fielda, fieldb, fieldc, fieldd_s, fielde_i from test limit 10"
dbConn = DriverManager . getConnection ( jdbc_url )
stmt = dbConn . createStatement ()
resultSet = stmt . executeQuery ( statement )
while resultSet . next ():
print ( resultSet . getString ( "fielda" ))
resultSet . close ()
stmt . close ()
dbConn . close ()
sys . exit ( 0 )
zxJDBC solr_zxjdbc.py
#!/usr/bin/env jython
# http://www.jython.org/jythonbook/en/1.0/DatabasesAndJython.html
# https://wiki.python.org/jython/DatabaseExamples#SQLite_using_ziclix
import sys
from com.ziclix.python.sql import zxJDBC
if __name__ == '__main__' :
jdbc_url = "jdbc:solr://localhost:9983?collection=test"
driverName = "org.apache.solr.client.solrj.io.sql.DriverImpl"
statement = "select fielda, fieldb, fieldc, fieldd_s, fielde_i from test limit 10"
with zxJDBC . connect ( jdbc_url , None , None , driverName ) as conn :
with conn :
with conn . cursor () as c :
c . execute ( statement )
print ( c . fetchall ())
sys . exit ( 0 )