Hi John, I'm betting that the problem occurs here: -> 1291 self._execute_query("SET @@session.autocommit = {0}".format(switch)) "SET..." is not supported right now. Qserv doesn't really handle much other than SELECT statements. For the longest time, we were focused on handling those well. Though they aren't perfect, we think qserv handles them well enough to support some practical usage now. One area that has gotten very little attention is in supporting things other than SQL SELECT queries. There is some short-circuit code that handles the few extra commands that the command-line "mysql" binary sends without user intervention, because that's what we test with. I think in this case, the best idea might be to save the proxy logs from connecting with the JDBC driver and with the mysql-connector. None of us (AFAIK) have tested with those, but we could see putting in some more short-circuit code to triage the "extracurricular" queries they send (we can put in some semi-reasonable canned responses), and that could very well get things working. We haven't set aside any space in our Nov sprint to work on this, but we might be able to squeeze it in, deferring existing tickets (Jacek will have to decide). In the meantime, you might be able to workaround this by calling the mysql binary in a shell process and then processing the output. In python, this wouldn't be too bad, and I might claim that the code is only incrementally more complex than using the API, and the performance (in practice) is mostly indistinguishable for, say, up to 10k or 100k result rows. FYI, qserv internally uses mysqldb when connecting to mysqld through Python, and the raw mysql C-API when connecting with C++. Hope this helps, -Daniel On 11/11/2014 08:27 PM, John Rector wrote: > Hi Daniel, > > This is a follow-up on my earlier note about trouble accessing Qserv > with JDBC. I tried a python module as well. (Results are not in the > logs I sent you, but I can send them if it's helpful.) > > ~> pip list | grep mysql > *mysql-connector-python (2.0.2)* > > It worked when I tried to connect to a standard MySQL db, but not when > I tried to connect to qserv. Immediately following the failure, I cut > and pasted the qserv connection values I had used into a /mysql/ > command in the same terminal session. That connect to the LSST db. > Below is the output from the Python connection attempt. > > BTW: is there a preferred Python module to use with qserv? I have a > few, but tried only one tonight—the one from the MySQL site. One more > question, has anyone tried to fill a Pandas data frame directly from a > qserv query? > > My ipython session: > > In [1]: *import mysql.connector* > > In [2]:*cnx = mysql.connector.connect(user='qsmaster', > host='lsst-db1.ipac.caltech.edu <http://lsst-db1.ipac.caltech.edu>', > database='LSST', port=4040)* > > --------------------------------------------------------------------------- > InternalError Traceback (most recent call > last) > <ipython-input-2-15e0754e8f3a> in <module>() > ----> 1 cnx = mysql.connector.connect(user='qsmaster', > host='lsst-db1.ipac.caltech.edu <http://lsst-db1.ipac.caltech.edu>', > database='LSST', port=4040) > > /Users/johnrector/anaconda/lib/python2.7/site-packages/mysql/connector/__init__.pyc > in connect(*args, **kwargs) > 157 > 158 # Regular connection > --> 159 return MySQLConnection(*args, **kwargs) > 160 Connect = connect # pylint: disable=C0103 > 161 > > /Users/johnrector/anaconda/lib/python2.7/site-packages/mysql/connector/connection.pyc > in __init__(self, *args, **kwargs) > 127 > 128 if len(kwargs) > 0: > --> 129 self.connect(**kwargs) > 130 > 131 def _get_self(self): > > /Users/johnrector/anaconda/lib/python2.7/site-packages/mysql/connector/connection.pyc > in connect(self, **kwargs) > 453 self.disconnect() > 454 self._open_connection() > --> 455 self._post_connection() > 456 > 457 def shutdown(self): > > /Users/johnrector/anaconda/lib/python2.7/site-packages/mysql/connector/connection.pyc > in _post_connection(self) > 433 """ > 434 self.set_charset_collation(self._charset_id) > --> 435 self.autocommit = self._autocommit > 436 if self._time_zone: > 437 self.time_zone = self._time_zone > > /Users/johnrector/anaconda/lib/python2.7/site-packages/mysql/connector/connection.pyc > in set_autocommit(self, value) > 1289 """Toggle autocommit""" > 1290 switch = 'ON' if value else 'OFF' > -> 1291 self._execute_query("SET @@session.autocommit = > {0}".format(switch)) > 1292 self._autocommit = value > 1293 > > /Users/johnrector/anaconda/lib/python2.7/site-packages/mysql/connector/connection.pyc > in _execute_query(self, query) > 1495 """ > 1496 if self._unread_result is True: > -> 1497 raise errors.InternalError("Unread result found.") > 1498 > 1499 self.cmd_query(query) > > InternalError: Unread result found. > > ______________________________ > John Rector > IPAC, California Institute of Technology > MS 100-22 > 770 S. Wilson Ave. > Pasadena, CA 91125 > USA > Tel: (626) 395—8577 > > > > > > ######################################################################## Use REPLY-ALL to reply to list To unsubscribe from the QSERV-L list, click the following link: https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=QSERV-L&A=1