Michael, I am not following your meaning when you say """on OSX you need to pass "and not u" """. Where does the string "and not u" go and what is its purpose?
Why did you use a unicode string for the select statement and the other arguments to cursor.execute? Mak P.S. I have run the pyodbc test scripts without any errors being reported using the same database connection string. $ python tests/dbapitests.py DSN=frankie-w7-animal-sa ---------------------------------------------------------------------- Ran 35 tests in 1.308s R. Mark Sharp, Ph.D. msh...@sfbr.org<mailto:msh...@sfbr.org> On Jan 24, 2011, at 7:42 PM, Michael Bayer wrote: Here's a script that runs fine for me on Windows as well as OSX using SQL Server 2008 with pyodbc 2.1.4, I also tried 2.1.8 on OSX without issue (on OSX you need to pass '' and not u''). Try it on yours, and if you continue to get the NTEXT error you may have to report this issue to the pyodbc mailing list. import pyodbc conn = pyodbc.connect('DSN=mydsn', user='scott', password='tiger') cursor = conn.cursor() cursor.execute(u""" SELECT [COLUMNS_1].[TABLE_SCHEMA], [COLUMNS_1].[TABLE_NAME], [COLUMNS_1].[COLUMN_NAME], [COLUMNS_1].[IS_NULLABLE], [COLUMNS_1].[DATA_TYPE], [COLUMNS_1].[ORDINAL_POSITION], [COLUMNS_1].[CHARACTER_MAXIMUM_LENGTH], [COLUMNS_1].[NUMERIC_PRECISION], [COLUMNS_1].[NUMERIC_SCALE], [COLUMNS_1].[COLUMN_DEFAULT], [COLUMNS_1].[COLLATION_NAME] FROM [INFORMATION_SCHEMA].[COLUMNS] AS [COLUMNS_1] WHERE [COLUMNS_1].[TABLE_NAME] = ? AND [COLUMNS_1].[TABLE_SCHEMA] = ? ORDER BY [COLUMNS_1].[ORDINAL_POSITION] """, (u'tf_valid_species', u'dbo')) print cursor.fetchall() On Jan 24, 2011, at 8:35 PM, Mark Sharp wrote: Michael, pyodbc.version returns 2.1.8 I tried your code snippet with the same results. I am going to try creating some tables and see how that goes. Mark R. Mark Sharp, Ph.D. msh...@sfbr.org<mailto:msh...@sfbr.org> On Jan 24, 2011, at 6:33 PM, Michael Bayer wrote: that's weird since I don't have that issue testing against a 2008 database. I can't actually reproduce it. You might want to try ensuring you're on a recent Pyodbc build. You can also try this: from sqlalchemy import create_engine from sqlalchemy.ext.sqlsoup import SqlSoup db = SqlSoup(create_engine("mssql+pyodbc://mydsn", convert_unicode=True)) On Jan 24, 2011, at 7:17 PM, Mark Sharp wrote: I decided to try to get some reflection using SqlSoup on a MS SQL Server 2008 database. This is a copy of my session with the DSN obfuscated. >>> from sqlalchemy.ext.sqlsoup import SqlSoup >>> engine1 = SqlSoup("mssql+pyodbc://mydsn") >>> valid_species = db.valid_species.all() Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'db' is not defined >>> valid_species = engine1.valid_species.all() Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/SQLAlchemy-0.6.6-py2.7.egg/sqlalchemy/ext/sqlsoup.py", line 792, in __getattr__ return self.entity(attr) File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/SQLAlchemy-0.6.6-py2.7.egg/sqlalchemy/ext/sqlsoup.py", line 789, in entity return self.map_to(attr, tablename=attr, schema=schema) File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/SQLAlchemy-0.6.6-py2.7.egg/sqlalchemy/ext/sqlsoup.py", line 672, in map_to schema=schema or self.schema) File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/SQLAlchemy-0.6.6-py2.7.egg/sqlalchemy/schema.py", line 210, in __new__ table._init(name, metadata, *args, **kw) File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/SQLAlchemy-0.6.6-py2.7.egg/sqlalchemy/schema.py", line 258, in _init include_columns=include_columns) File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/SQLAlchemy-0.6.6-py2.7.egg/sqlalchemy/engine/base.py", line 1863, in reflecttable self.dialect.reflecttable(conn, table, include_columns) File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/SQLAlchemy-0.6.6-py2.7.egg/sqlalchemy/engine/default.py", line 228, in reflecttable return insp.reflecttable(table, include_columns) File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/SQLAlchemy-0.6.6-py2.7.egg/sqlalchemy/engine/reflection.py", line 382, in reflecttable for col_d in self.get_columns(table_name, schema, **tblkw): File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/SQLAlchemy-0.6.6-py2.7.egg/sqlalchemy/engine/reflection.py", line 229, in get_columns **kw) File "<string>", line 1, in <lambda> File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/SQLAlchemy-0.6.6-py2.7.egg/sqlalchemy/engine/reflection.py", line 46, in cache ret = fn(self, con, *args, **kw) File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/SQLAlchemy-0.6.6-py2.7.egg/sqlalchemy/dialects/mssql/base.py", line 1244, in get_columns c = connection.execute(s) File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/SQLAlchemy-0.6.6-py2.7.egg/sqlalchemy/engine/base.py", line 1191, in execute params) File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/SQLAlchemy-0.6.6-py2.7.egg/sqlalchemy/engine/base.py", line 1271, in _execute_clauseelement return self.__execute_context(context) File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/SQLAlchemy-0.6.6-py2.7.egg/sqlalchemy/engine/base.py", line 1302, in __execute_context context.parameters[0], context=context) File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/SQLAlchemy-0.6.6-py2.7.egg/sqlalchemy/engine/base.py", line 1401, in _cursor_execute context) File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/SQLAlchemy-0.6.6-py2.7.egg/sqlalchemy/engine/base.py", line 1394, in _cursor_execute context) File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/SQLAlchemy-0.6.6-py2.7.egg/sqlalchemy/engine/default.py", line 299, in do_execute cursor.execute(statement, parameters) sqlalchemy.exc.ProgrammingError: (ProgrammingError) ('42000', '[42000] [Actual][SQL Server] The data types nvarchar and ntext are incompatible in the equal to operator. (402) (SQLExecDirectW)') u'SELECT [COLUMNS_1].[TABLE_SCHEMA], [COLUMNS_1].[TABLE_NAME], [COLUMNS_1].[COLUMN_NAME], [COLUMNS_1].[IS_NULLABLE], [COLUMNS_1].[DATA_TYPE], [COLUMNS_1].[ORDINAL_POSITION], [COLUMNS_1].[CHARACTER_MAXIMUM_LENGTH], [COLUMNS_1].[NUMERIC_PRECISION], [COLUMNS_1].[NUMERIC_SCALE], [COLUMNS_1].[COLUMN_DEFAULT], [COLUMNS_1].[COLLATION_NAME] \nFROM [INFORMATION_SCHEMA].[COLUMNS] AS [COLUMNS_1] \nWHERE [COLUMNS_1].[TABLE_NAME] = ? AND [COLUMNS_1].[TABLE_SCHEMA] = ? ORDER BY [COLUMNS_1].[ORDINAL_POSITION]' (u'valid_species', u'dbo') R. Mark Sharp, Ph.D. msh...@sfbr.org<mailto:msh...@sfbr.org> -- 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<mailto:sqlalchemy@googlegroups.com>. To unsubscribe from this group, send email to sqlalchemy+unsubscr...@googlegroups.com<mailto: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<mailto:sqlalchemy@googlegroups.com>. To unsubscribe from this group, send email to sqlalchemy+unsubscr...@googlegroups.com<mailto: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<mailto:sqlalchemy@googlegroups.com>. To unsubscribe from this group, send email to sqlalchemy+unsubscr...@googlegroups.com<mailto: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<mailto:sqlalchemy@googlegroups.com>. To unsubscribe from this group, send email to sqlalchemy+unsubscr...@googlegroups.com<mailto: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.