def connect(): return pyodbc.connect( 'DRIVER={FreeTDS};SERVER=<ip_address>;' 'DATABASE=<db_name>;UID=test;PWD=test;port=1433;' 'TDS_Version=9.1;')engine = sqlalchemy.create_engine('mssql://', creator=connect)conn = engine.connect()create_table_from_csv(engine,import pyodbcimport sqlalchemyfrom sqlalchemy.engine import reflectionfrom sqlalchemy.engine.reflection import Inspector
def connect(): return pyodbc.connect( 'DRIVER={FreeTDS};SERVER=<ip_address>;' 'DATABASE=<db_name>;UID=test;PWD=test;port=1433;' 'TDS_Version=9.1;')engine = sqlalchemy.create_engine('mssql://', creator=connect)conn = engine.connect()print conn
for row in engine.execute('select 6 * 7 as [Result];'): print row.Result
insp = reflection.Inspector.from_engine(engine)table_name = 'irb_desc'table_names = insp.get_table_names()if table_name not in table_names: print 'A'Then, I thought, what if this is an SQLAlchemy issue. Looks to be. I ran the following script as a test:import pyodbcimport sqlalchemyfrom sqlalchemy.engine import reflectionfrom sqlalchemy.engine.reflection import Inspectordef connect():return pyodbc.connect('DRIVER={FreeTDS};SERVER=<ip_address>;''DATABASE=<db_name>;UID=test;PWD=test;port=1433;''TDS_Version=9.1;')engine = sqlalchemy.create_engine('mssql://', creator=connect)conn = engine.connect()print connfor row in engine.execute('select 6 * 7 as [Result];'):print row.Resultinsp = reflection.Inspector.from_engine(engine)table_name = 'irb_desc'table_names = insp.get_table_names()if table_name not in table_names:print 'A'
Again, I am connecting fine with the database create.engine method (that is '42' is printing as expected), but when I run the inspector.get_table_names method with the given conditional it is printing the 'A' (I have tried other table names in the same database to which I added 'irbd_balance,' all with the same result.
gms$ python test_connect.py2014-08-18 10:17:28,095 INFO sqlalchemy.engine.base.Engine SELECT user_name()2014-08-18 10:17:28,095 INFO sqlalchemy.engine.base.Engine ()2014-08-18 10:17:28,097 DEBUG sqlalchemy.engine.base.Engine Col ('',)2014-08-18 10:17:28,098 DEBUG sqlalchemy.engine.base.Engine Row (u'dbo', )2014-08-18 10:17:28,099 INFO sqlalchemy.engine.base.Engine SELECT default_schema_name FROM sys.database_principals WHERE name = ? AND type = 'S'
2014-08-18 10:17:28,099 INFO sqlalchemy.engine.base.Engine (u'dbo',)2014-08-18 10:17:28,101 DEBUG sqlalchemy.engine.base.Engine Col ('default_schema_name',)2014-08-18 10:17:28,103 INFO sqlalchemy.engine.base.Engine SELECT CAST('test plain returns' AS VARCHAR(60)) AS anon_12014-08-18 10:17:28,103 INFO sqlalchemy.engine.base.Engine ()2014-08-18 10:17:28,106 INFO sqlalchemy.engine.base.Engine SELECT CAST('test unicode returns' AS NVARCHAR(60)) AS anon_12014-08-18 10:17:28,106 INFO sqlalchemy.engine.base.Engine ()<sqlalchemy.engine.base.Connection object at 0x101839490>2014-08-18 10:17:28,382 INFO sqlalchemy.engine.base.Engine select 6 * 7 as [Result];2014-08-18 10:17:28,382 INFO sqlalchemy.engine.base.Engine ()2014-08-18 10:17:28,384 DEBUG sqlalchemy.engine.base.Engine Col ('Result',)2014-08-18 10:17:28,384 DEBUG sqlalchemy.engine.base.Engine Row (42, )422014-08-18 10:17:28,389 INFO sqlalchemy.engine.base.Engine SELECT [TABLES_1].[TABLE_NAME]FROM [INFORMATION_SCHEMA].[TABLES] AS [TABLES_1]WHERE [TABLES_1].[TABLE_SCHEMA] = CAST(? AS NVARCHAR(max)) AND [TABLES_1].[TABLE_TYPE] = ? ORDER BY [TABLES_1].[TABLE_NAME]2014-08-18 10:17:28,389 INFO sqlalchemy.engine.base.Engine (u'dbo', 'BASE TABLE')2014-08-18 10:17:28,394 DEBUG sqlalchemy.engine.base.Engine Col ('TABLE_NAME',)Apython test_connect.py2014-08-18 16:15:06,611 INFO sqlalchemy.engine.base.Engine SELECT default_schema_name FROM sys.database_principals WHERE principal_id=database_principal_id()
2014-08-18 16:15:06,611 INFO sqlalchemy.engine.base.Engine ()2014-08-18 16:15:06,613 DEBUG sqlalchemy.engine.base.Engine Col ('default_schema_name',)2014-08-18 16:15:06,614 DEBUG sqlalchemy.engine.base.Engine Row (u'dbo', )2014-08-18 16:15:06,616 INFO sqlalchemy.engine.base.Engine SELECT CAST('test plain returns' AS VARCHAR(60)) AS anon_12014-08-18 16:15:06,616 INFO sqlalchemy.engine.base.Engine ()2014-08-18 16:15:06,619 INFO sqlalchemy.engine.base.Engine SELECT CAST('test unicode returns' AS NVARCHAR(60)) AS anon_12014-08-18 16:15:06,619 INFO sqlalchemy.engine.base.Engine ()<sqlalchemy.engine.base.Connection object at 0x101877ed0>2014-08-18 16:15:06,639 INFO sqlalchemy.engine.base.Engine select 6 * 7 as [Result];2014-08-18 16:15:06,639 INFO sqlalchemy.engine.base.Engine ()2014-08-18 16:15:06,641 DEBUG sqlalchemy.engine.base.Engine Col ('Result',)2014-08-18 16:15:06,641 DEBUG sqlalchemy.engine.base.Engine Row (42, )422014-08-18 16:15:06,647 INFO sqlalchemy.engine.base.Engine SELECT [TABLES_1].[TABLE_NAME]FROM [INFORMATION_SCHEMA].[TABLES] AS [TABLES_1]WHERE [TABLES_1].[TABLE_SCHEMA] = CAST(? AS NVARCHAR(max)) AND [TABLES_1].[TABLE_TYPE] = ? ORDER BY [TABLES_1].[TABLE_NAME]2014-08-18 16:15:06,647 INFO sqlalchemy.engine.base.Engine ('dbo', 'BASE TABLE')2014-08-18 16:15:06,663 DEBUG sqlalchemy.engine.base.Engine Col ('TABLE_NAME',)2014-08-18 16:15:06,663 DEBUG sqlalchemy.engine.base.Engine Row (u'irb_desc', )2014-08-18 16:15:06,663 DEBUG sqlalchemy.engine.base.Engine Row (u'irbd', )2014-08-18 16:15:06,663 DEBUG sqlalchemy.engine.base.Engine Row (u'study_desc', )2014-08-18 16:15:06,664 DEBUG sqlalchemy.engine.base.Engine Row (u'study_irb', )2014-08-18 16:15:06,664 DEBUG sqlalchemy.engine.base.Engine Row (u'study_status', )2014-08-18 16:15:06,664 DEBUG sqlalchemy.engine.base.Engine Row (u'study_status_desc', )2014-08-18 16:15:06,664 DEBUG sqlalchemy.engine.base.Engine Row (u'study_subject', )2014-08-18 16:15:06,664 DEBUG sqlalchemy.engine.base.Engine Row (u'subj_desc', )2014-08-18 16:15:06,664 DEBUG sqlalchemy.engine.base.Engine Row (u'subj_status_desc', )2014-08-18 16:15:06,665 DEBUG sqlalchemy.engine.base.Engine Row (u'subject_status', )2014-08-18 16:15:06,665 DEBUG sqlalchemy.engine.base.Engine Row (u'sysdiagrams', )