Actually the ibm_db_sa support several methods to connect to iSeries; natively through ibm_db, pyodbc, or jdbc (with jython). On Jun 8, 2014 8:53 AM, "Cory Lutton" <cory.lut...@gmail.com> wrote:
> Thanks for such a quick reply. Great to hear that I am starting out on > the right path with building a dialect, I have some work to do so I just > wanted to make sure I wasn't missing something before I spend the time. > Hopefully I can get things working enough where I can post it somewhere. > > I have looked at that IBM DB package, unfortunately the iSeries is a > "remote" connection using ibm_db meaning I would have to get the Enterprise > DB2 connect or get a special quote for unlimited.... makes me laugh a bit > what the listed price is. > > On Saturday, June 7, 2014 5:48:02 PM UTC-7, Michael Bayer wrote: >> >> >> On Jun 7, 2014, at 8:27 PM, Cory Lutton <cory....@gmail.com> wrote: >> >> 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 >> >> >> >> looks great. if you want examples of the full format, take a look at >> some of the existing external dialects at http://docs.sqlalchemy.org/ >> en/rel_0_9/dialects/index.html#external-dialects. >> >> Are you sure that the IBM DB SA dialect doesn’t cover this backend >> already? They have support for pyodbc + DB2, but I’m not really sure how >> “iSeries” differs. https://code.google.com/p/ibm-db/ >> >> >> -- > 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. > -- 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.