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.