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. >> >> > > > > -- > Bo Shi > 617-942-1744 > -- Bo Shi 617-942-1744 -- 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.