I think I'm confused. Isn't Pyodbc an alternative to SQLAlchemy? If
not, how would the two work together? I just looked through the
'Getting Started' and 'API' docs for Pyodbc, and I don't see any
examples. I found some samples online of people using the two
together, but I don't quite follow how the process works. Thanks.

On 2/10/16, Jaimy Azle <jaimy.a...@gmail.com> wrote:
> Connecting to AS400 from native ibm_db_dbi driver would need db2 connect
> which is a separated product from IBM. Use the ibm_db_sa pyodbc driver
> instead, or jdbc (jython) if you don't have db2 connect installed on your
> machine.
>
> Salam,
>
> -Jaimy
> On Feb 11, 2016 01:50, "Alex Hall" <ah...@autodist.com> wrote:
>
>> Hello list,
>> I sent this to the ibm_db list yesterday, but no one has responded
>> yet. Since it's as much ibm_db as SA, I thought I'd try here as well
>> in case any of you have used an AS400 before. I have ibm_db,
>> ibm_db_sa, the latest sqlalchemy, and Python 2.7 (latest) installed. I
>> can talk to SQLite with no trouble, it's talking to this 400 that
>> won't work. Anyway...
>>
>> I'm finally ready to hook my app to the 400 instead of the local
>> SQLite database I've been using for testing. Here's my simple script:
>>
>> import globals
>> import logging
>> from sqlalchemy import *
>> from sqlalchemy.ext.declarative import declarative_base
>> from sqlalchemy.orm import sessionmaker
>>
>> #set up the sqlalchemy objects
>> dbEngine = create_engine('ibm_db_sa://
>> username:passw...@mysite.com:8471/database')
>> Session = sessionmaker(bind = dbEngine) #note that's a capital s on
>> Session
>> session = Session() #lowercase s
>> base = declarative_base()
>>
>> def getAllTables():
>>  dbInspector = inspect(dbEngine)
>>  for table in dbInspector.get_table_names():
>>   print table
>>
>> getAllTables()
>>
>> When I run that, it waits thirty seconds or so, then tells me there
>> was an error. I'll paste the entire traceback below. Sorry in
>> advance--it's pretty long.
>>
>> Microsoft Windows [Version 6.1.7601]
>> Copyright (c) 2009 Microsoft Corporation.  All rights reserved.
>>
>> C:\Users\admin\Dropbox\Autodist\jobs>c:\python27\python.exe
>> DBInterface2.py
>> Traceback (most recent call last):
>>   File "DBInterface2.py", line 24, in <module>
>>     getAllTables()
>>   File "DBInterface2.py", line 18, in getAllTables
>>     dbInspector = inspect(dbEngine)
>>   File "c:\python27\lib\site-packages\sqlalchemy\inspection.py", line 63,
>> in ins
>> pect
>>     ret = reg(subject)
>>   File "c:\python27\lib\site-packages\sqlalchemy\engine\reflection.py",
>> line 139
>> , in _insp
>>     return Inspector.from_engine(bind)
>>   File "c:\python27\lib\site-packages\sqlalchemy\engine\reflection.py",
>> line 135
>> , in from_engine
>>     return Inspector(bind)
>>   File "c:\python27\lib\site-packages\sqlalchemy\engine\reflection.py",
>> line 109
>> , in __init__
>>     bind.connect().close()
>>   File "c:\python27\lib\site-packages\sqlalchemy\engine\base.py", line
>> 2018, in
>> connect
>>     return self._connection_cls(self, **kwargs)
>>   File "c:\python27\lib\site-packages\sqlalchemy\engine\base.py", line
>> 72,
>> in __
>> init__
>>     if connection is not None else engine.raw_connection()
>>   File "c:\python27\lib\site-packages\sqlalchemy\engine\base.py", line
>> 2104, in
>> raw_connection
>>     self.pool.unique_connection, _connection)
>>   File "c:\python27\lib\site-packages\sqlalchemy\engine\base.py", line
>> 2078, in
>> _wrap_pool_connect
>>     e, dialect, self)
>>   File "c:\python27\lib\site-packages\sqlalchemy\engine\base.py", line
>> 1405, in
>> _handle_dbapi_exception_noconnection
>>     exc_info
>>   File "c:\python27\lib\site-packages\sqlalchemy\util\compat.py", line
>> 200, in r
>> aise_from_cause
>>     reraise(type(exception), exception, tb=exc_tb)
>>   File "c:\python27\lib\site-packages\sqlalchemy\engine\base.py", line
>> 2074, in
>> _wrap_pool_connect
>>     return fn()
>>   File "c:\python27\lib\site-packages\sqlalchemy\pool.py", line 318, in
>> unique_c
>> onnection
>>     return _ConnectionFairy._checkout(self)
>>   File "c:\python27\lib\site-packages\sqlalchemy\pool.py", line 713, in
>> _checkou
>> t
>>     fairy = _ConnectionRecord.checkout(pool)
>>   File "c:\python27\lib\site-packages\sqlalchemy\pool.py", line 480, in
>> checkout
>>
>>     rec = pool._do_get()
>>   File "c:\python27\lib\site-packages\sqlalchemy\pool.py", line 1060, in
>> _do_get
>>
>>     self._dec_overflow()
>>   File "c:\python27\lib\site-packages\sqlalchemy\util\langhelpers.py",
>> line 60,
>> in __exit__
>>     compat.reraise(exc_type, exc_value, exc_tb)
>>   File "c:\python27\lib\site-packages\sqlalchemy\pool.py", line 1057, in
>> _do_get
>>
>>     return self._create_connection()
>>   File "c:\python27\lib\site-packages\sqlalchemy\pool.py", line 323, in
>> _create_
>> connection
>>     return _ConnectionRecord(self)
>>   File "c:\python27\lib\site-packages\sqlalchemy\pool.py", line 449, in
>> __init__
>>
>>     self.connection = self.__connect()
>>   File "c:\python27\lib\site-packages\sqlalchemy\pool.py", line 607, in
>> __connec
>> t
>>     connection = self.__pool._invoke_creator(self)
>>   File "c:\python27\lib\site-packages\sqlalchemy\engine\strategies.py",
>> line 97,
>>  in connect
>>     return dialect.connect(*cargs, **cparams)
>>   File "c:\python27\lib\site-packages\sqlalchemy\engine\default.py", line
>> 385, i
>> n connect
>>     return self.dbapi.connect(*cargs, **cparams)
>>   File
>> "c:\python27\lib\site-packages\ibm_db-2.0.6-py2.7.egg\ibm_db_dbi.py", lin
>> e 588, in connect
>>     raise _get_exception(inst)
>> sqlalchemy.exc.OperationalError: (ibm_db_dbi.OperationalError)
>> ibm_db_dbi::Opera
>> tionalError: [IBM][CLI Driver] SQL30081N  A communication error has been
>> detecte
>> d. Communication protocol being used: "TCP/IP".  Communication API being
>> used: "
>> SOCKETS".  Location where the error was detected: "[IP of the 400
>> server]".  Communicatio
>> n function detecting the error: "connect".  Protocol specific error
>> code(s): "10
>> 060", "*", "*".  SQLSTATE=08001\r SQLCODE=-30081
>>
>> (I took out the actual IP). I'm not sure what most of that means, but
>> it looks like I can't connect to the 400 for some reason. Bad
>> credentials or something could be it, I suppose, but I'm using what my
>> work told me to use. I wondered if anyone here could spot the problem
>> before I go chasing different login details that I don't actually
>> need. Thanks in advance for any help.
>>
>> --
>> 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 https://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 https://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 https://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to