Hrm, some different errors pop up. I'll move the dialog to the ticket in question.
http://www.sqlalchemy.org/trac/ticket/1757 On Fri, Apr 2, 2010 at 2:40 PM, Bo Shi <bs1...@gmail.com> wrote: > Awesome! Thanks! > > We work with large amounts of time series data so we have high hopes > for the c extension. > > Bo > > On Fri, Apr 2, 2010 at 2:38 PM, Michael Bayer <mike...@zzzcomputing.com> > wrote: >> Michael Bayer wrote: >>> Bo Shi wrote: >>>>> pep 249 specifies "list of tuples" for fetchmany() and fetchall() >>>> >>>> Hrm, pep-249 seems to only specify "sequence" and "sequence of >>>> sequences" for the fetch*() functions, specifying list of tuples only >>>> as one possible example. Perhaps the C implementation of RowProxy is >>>> being too strict here? I'm surprised that pyodbc is the only dbapi >>>> implementation that this problem has occurred in... do all the other >>>> implementations subclass tuple for their rows? >>> >>> we run the tests all the time with Pyodbc, so I wasn't aware this was a >>> pyodbc issue. I'd run without the c extensions for now. For our C >>> extension to coerce into a tuple begins to add overhead and defeat the >>> purpose of using the extensions in the first place, though Gaetan would >>> have to answer this question. >> >> Looks like we have a fix as of r3b40ceca28d3, cextensions now look for >> "sequence" instead of "tuple". >> >> >> >> >>> >>> >>> >>> >>> >>>> >>>> On Mon, Mar 29, 2010 at 8:03 PM, Michael Bayer >>>> <mike...@zzzcomputing.com> >>>> wrote: >>>>> how come the strack trace shows "beta2" as the version number in the >>>>> path ? did you mean to say between beta1 and beta2 ? it looks >>>>> specific to the C rewrite of RowProxy. basically the rows returned by >>>>> fetchone(), fetchall() etc. are expected to be tuples. pep 249 >>>>> specifies "list of tuples" for fetchmany() and fetchall() though is >>>>> less >>>>> specific for fetchone(), though I'm pretty sure it intends tuples there >>>>> as well. >>>>> >>>>> >>>>> On Mar 29, 2010, at 7:43 PM, Bo Shi wrote: >>>>> >>>>>> Also, dunno if it's helpful or not, but this is a regression in >>>>>> 0.6beta3. My dialect plugin works as is when using 0.6beta2. >>>>>> >>>>>> On Mon, Mar 29, 2010 at 7:41 PM, Bo Shi <bs1...@gmail.com> wrote: >>>>>>> Thanks, explicitly assigning self.dbapi in my dialect constructor >>>>>>> seems to get around the exception. >>>>>>> >>>>>>> I do, however, encounter a new exception: >>>>>>> >>>>>>> File "test_vertica.py", line 57, in testTransactionIsolation >>>>>>> _, iso_level = e.execute('SHOW TRANSACTION_ISOLATION').fetchone() >>>>>>> File >>>>>>> "/home/vmc/ENV/lib/python2.6/site-packages/SQLAlchemy-0.6beta2-py2.6-linux-x86_64.egg/sqlalchemy/engine/base.py", >>>>>>> line 2204, in fetchone >>>>>>> return self.process_rows([row])[0] >>>>>>> File >>>>>>> "/home/vmc/ENV/lib/python2.6/site-packages/SQLAlchemy-0.6beta2-py2.6-linux-x86_64.egg/sqlalchemy/engine/base.py", >>>>>>> line 2163, in process_rows >>>>>>> for row in rows] >>>>>>> TypeError: row must be a tuple >>>>>>> >>>>>>> >>>>>>> Any idea what's going on? The stack trace isn't very informative, >>>>>>> I'm >>>>>>> afraid. >>>>>>> >>>>>>> On Mon, Mar 29, 2010 at 6:05 PM, Michael Bayer >>>>>>> <mike...@zzzcomputing.com> wrote: >>>>>>>> Bo Shi wrote: >>>>>>>>> Hello, >>>>>>>>> >>>>>>>>> I had a custom dialect based on the PyODBC functionality that was >>>>>>>>> working with SQLA SVN-6738. Upgrading to beta 3, my tests no >>>>>>>>> longer >>>>>>>>> pass, so I've begun the process updating - on_connect() was easy, >>>>>>>>> now >>>>>>>>> I'm stumped on connect(...). I've gotten to the point where, when >>>>>>>>> using my dialect, connect() fails because it attempts to run >>>>>>>>> self.dbapi.connect(...) but the PyODBC connector seems to implement >>>>>>>>> it >>>>>>>>> as a classmethod: >>>>>>>>> >>>>>>>>> >>>>>>>>> Taking the following from the connector in revision control: >>>>>>>>> >>>>>>>>> 9 class PyODBCConnector(Connector): >>>>>>>>> >>>>>>>>> 27 �...@classmethod >>>>>>>>> 28 def dbapi(cls): >>>>>>>>> 29 return __import__('pyodbc') >>>>>>>>> >>>>>>>>> 84 def initialize(self, connection): >>>>>>>>> 85 # determine FreeTDS first. can't issue SQL easily >>>>>>>>> 86 # without getting unicode_statements/binds set up. >>>>>>>>> 87 >>>>>>>>> 88 pyodbc = self.dbapi >>>>>>>>> 89 >>>>>>>>> 90 dbapi_con = connection.connection >>>>>>>>> 91 >>>>>>>>> 92 self.freetds = bool(re.match(r".*libtdsodbc.*\.so", >>>>>>>>> dbapi_con.getinfo(pyodbc.SQL_DRIVER_NAME))) >>>>>>>>> >>>>>>>>> >>>>>>>>> If dbapi is implemented as a class method, then wouldn't the call >>>>>>>>> on >>>>>>>>> line 92 fail? Indeed, that's what I'm seeing. So is self.dbapi >>>>>>>>> getting assigned somewhere else? >>>>>>>> >>>>>>>> yeah there's a slight misfortune in that naming scheme - the >>>>>>>> @classmethod >>>>>>>> should have some different name, probably "import_dbapi". the >>>>>>>> reassignment takes place on line 102 of >>>>>>>> sqlalchemy/engine/default.py. >>>>>>>> this naming scheme is also present in 0.5 - it was just the >>>>>>>> PyODBCConnector that somehow didn't catch up until recently. >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> Thanks, >>>>>>>>> Bo >>>>>>>>> >>>>>>>>> -- >>>>>>>>> You received this message because you are subscribed to the Google >>>>>>>>> Groups >>>>>>>>> "sqlalchemy" group. >>>>>>>>> To post to this group, send email to sqlalch...@googlegroups.com. >>>>>>>>> To unsubscribe from this group, send email to >>>>>>>>> sqlalchemy+unsubscr...@googlegroups.com. >>>>>>>>> For more options, visit this group at >>>>>>>>> http://groups.google.com/group/sqlalchemy?hl=en. >>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> You received this message because you are subscribed to the Google >>>>>>>> Groups "sqlalchemy" group. >>>>>>>> To post to this group, send email to sqlalch...@googlegroups.com. >>>>>>>> To unsubscribe from this group, send email to >>>>>>>> sqlalchemy+unsubscr...@googlegroups.com. >>>>>>>> For more options, visit this group at >>>>>>>> http://groups.google.com/group/sqlalchemy?hl=en. >>>>>>>> >>>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>> >>>>>> -- >>>>>> You received this message because you are subscribed to the Google >>>>>> Groups "sqlalchemy" group. >>>>>> To post to this group, send email to sqlalch...@googlegroups.com. >>>>>> To unsubscribe from this group, send email to >>>>>> sqlalchemy+unsubscr...@googlegroups.com. >>>>>> For more options, visit this group at >>>>>> http://groups.google.com/group/sqlalchemy?hl=en. >>>>>> >>>>> >>>>> -- >>>>> You received this message because you are subscribed to the Google >>>>> Groups "sqlalchemy" group. >>>>> To post to this group, send email to sqlalch...@googlegroups.com. >>>>> To unsubscribe from this group, send email to >>>>> sqlalchemy+unsubscr...@googlegroups.com. >>>>> For more options, visit this group at >>>>> http://groups.google.com/group/sqlalchemy?hl=en. >>>>> >>>>> >>>> >>>> >>>> >>>> >>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups >>>> "sqlalchemy" group. >>>> To post to this group, send email to sqlalch...@googlegroups.com. >>>> To unsubscribe from this group, send email to >>>> sqlalchemy+unsubscr...@googlegroups.com. >>>> For more options, visit this group at >>>> http://groups.google.com/group/sqlalchemy?hl=en. >>>> >>>> >>> >>> -- >>> You received this message because you are subscribed to the Google Groups >>> "sqlalchemy" group. >>> To post to this group, send email to sqlalch...@googlegroups.com. >>> To unsubscribe from this group, send email to >>> sqlalchemy+unsubscr...@googlegroups.com. >>> For more options, visit this group at >>> http://groups.google.com/group/sqlalchemy?hl=en. >>> >>> >> >> -- >> You received this message because you are subscribed to the Google Groups >> "sqlalchemy" group. >> To post to this group, send email to sqlalch...@googlegroups.com. >> To unsubscribe from this group, send email to >> sqlalchemy+unsubscr...@googlegroups.com. >> For more options, visit this group at >> http://groups.google.com/group/sqlalchemy?hl=en. >> >> > -- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to sqlalch...@googlegroups.com. To unsubscribe from this group, send email to sqlalchemy+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en.