On Jul 6, 2011, at 11:19 AM, Christian Klinger wrote:

> Hi Michael,
> 
> i am intrested in writing a dialect for DB2. Is there any howto which covers 
> what is needed to start. Do you think we should write an extension, or should 
> this dialect in sqlalchemy itself?

first off, HOORAY, secondly, this would be a dialect within SQLAlchemy itself 
under sqlalchemy.dialects.

Here are the two files we would need:

sqlalchemy/dialects/db2/base.py
sqlalchemy/dialects/db2/ibm_db.py

So in "base.py", the base dialect classes, things that deal with the kind of 
SQL that DB2 deals with.    Preferably no details that are specific to the 
DBAPI.   In ibm_db.py is where things that are specific to IBMs DBAPI are 
present.    At some later point, if for example pyodbc could also connect to 
DB2, we'd add a "pyodbc.py" file there.

Then to do what's in base.py, ibm_db.py, you need to emulate what's in all the 
other dialects.      Some smaller ones to look at are firebird, sybase.  More 
involved are mssql, postgresql, oracle.   The MySQL dialect is good too but 
that one is particularly complicated due to a lot of difficulties MySQL 
presents.

When I write a new dialect from scratch, the first thing I do is just to get it 
to run at all, which usually means a script like this:

e = create_engine('db2:ibm_db://scott:tiger@localhost/test')
c = e.connect()
print c.execute('SELECT 1').fetchall()

That's pretty much "hello world".   You might try to work with a few variants 
of "hello world" just to get things going.

Then, you can start moving onto the actual tests.  This is also an incremental 
process, and I usually start with test/sql/test_query.py which tests basic 
round trips.    The last section of README.unittests has several paragraphs on 
how to test new dialects and includes an overview of which tests to start with.





> 
> Thanks in advance
> Christian
> 
>> 
>> On Jun 29, 2011, at 6:43 AM, Luca Lesinigo wrote:
>> 
>>> Hello there. I'd like to use SQLalchemy with an existing db2 database
>>> (I can already access it with plain SQL using pyODBC from a python-2.6/
>>> win32 system).
>>> 
>>> Googling around, I found http://code.google.com/p/ibm-db and it seems
>>> to have an updated DB-API driver for python-2.6/win32, but the latest
>>> SA adapter is for sqlalchemy-0.4.
>>> 
>>> Is there any way to access DB2 from sqlalchemy-0.6 or -0.7?
>>> If that helps, I'm gonna use it in read-only (ie, no INSERT, UPDATE,
>>> DELETE queries will be issued nor would they be accepted by the db)
>> 
>> A project I'd like to take on at some point, or to get someone else to do 
>> it, would be to write a modernized SQLAlchemy 0.7 dialect for DB2, where we 
>> would use DB2's DBAPI, but not their SQLAlchemy dialect which is out of date 
>> and they appear to not be doing much with.   I'd write a new dialect rather 
>> than porting/looking at the one IBM wrote just so there's no potential 
>> licensing issues.  The new DB2 dialect would live with all the other 
>> dialects under the SQLAlchemy project itself.
>> 
>> I understand DB2 has a free "express" edition so it would be a matter of 
>> getting that going and working out the dialect.     Dialects aren't too hard 
>> to write so we do get them contributed, but for the moment we don't have a 
>> DB2 story for modern SQLAlchemy versions.
>> 
>> 
>> 
>> 
>>> 
>>> thanks, Luca
>>> 
>>> --
>>> You received this message because you are subscribed to the Google Groups 
>>> "sqlalchemy" group.
>>> To post to this group, send email to sqlalchemy@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 sqlalchemy@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 sqlalchemy@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.

Reply via email to