I have been looking at using sqlalchemy in an internal company cherrypy 
application I am working on.  It will need to interface with my companies 
iSeries server in order to use ERP data.  I have been using pyodbc so far 
and everything works great.  I am thinking of adding access to another 
database that is postgres.  Rather than write that stuff again, I was 
thinking about trying to use sqlalchemy.  If I use that I would want to use 
it for both....one for the iSeries (DB2) and one for postgres......

So, I started writing a "dialect" for iseries+pyodbc and want to make sure 
I am headed down the right path.  It seems to be working so far.... 
import sqlalchemy as sa
import sqlalchemy_iseries
from urllib.parse import quote
    
engine = sa.create_engine(
        "iseries+pyodbc:///?odbc_connect={connect}".format(
            connect=quote(connect)), pool_size=1)
con = engine.connect()

# Only using like a pyodbc cursor, executing specifically created 
statements.
rows = con.execute("SELECT * FROM alpha.r50all.lbmx")

# Access via name like a dictionary rather than row.LBID
for row in rows:
    print(row['LBID'])

con.close()

Being new to sqlalchemy I am hoping to get some advice on whether what I am 
doing below is basically going in the right direction or point me in the 
right direction if I am headed the wrong way (or reinventing something) 
.....

Here is what I have so far...

*__init__.py:*
from sqlalchemy.dialects import registry
from . import pyodbc

dialect = pyodbc.dialect

registry.register("iseries.pyodbc", "sqlalchemy_iseries", "dialect")

*base.py:*
from sqlalchemy.engine import default

class ISeriesDialect(default.DefaultDialect):
    name = 'iseries'
    max_identifier_length = 128
    schema_name = "qgpl"


*pyodbc.py:*
from .base import ISeriesDialect
from sqlalchemy.connectors.pyodbc import PyODBCConnector

class ISeriesDialect_pyodbc(PyODBCConnector, ISeriesDialect):
    pyodbc_driver_name = 'iSeries Access ODBC Driver'

    def _check_unicode_returns(self, connection):
        return False

dialect = ISeriesDialect_pyodbc

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to