I get the following error when trying to do any simple query. I just can't figure out what's changed.
Here is an example of the sqlalchemy (Elixir) class:
class Song(Entity):
using_options(tablename='tbSongs', autoload=True)
using_table_options(schema='apra')
The database connection is ok and the classes construct ok because I can do dir(Song)
and see all the correct columns. However, a simple query won't work.
Here is a query on that class and the resulting output:
>>> songs = Song.query.all()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/site-packages/sqlalchemy/orm/query.py", line 1729, in all
return list(self)
File "/usr/lib/python2.7/site-packages/sqlalchemy/orm/query.py", line 1839, in __iter__
return self._execute_and_instances(context)
File "/usr/lib/python2.7/site-packages/sqlalchemy/orm/query.py", line 1854, in _execute_and_instances
result = conn.execute(querycontext.statement, self._params)
File "/usr/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 1399, in execute
params)
File "/usr/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 1532, in _execute_clauseelement
compiled_sql, distilled_params
File "/usr/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 1640, in _execute_context
context)
File "/usr/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 1633, in _execute_context
context)
File "/usr/lib/python2.7/site-packages/sqlalchemy/engine/default.py", line 325, in do_execute
cursor.execute(statement, parameters)
sqlalchemy.exc.DBAPIError: (Error) ('IM001', '[IM001] [unixODBC][Driver Manager]Driver does not support this function (0) (SQLColAttribute)') 'SELECT [tbSongs_1].[ID_Song] AS [apra_tbSongs_ID_Song], [tbSongs_1].[Album] AS [apra_tbSongs_Album], [tbSongs_1].[Title] AS [apra_tbSongs_Title], [tbSongs_1].[Composer] AS [apra_tbSongs_Composer], [tbSongs_1].[Performer] AS [apra_tbSongs_Performer], [tbSong开发者_运维百科s_1].[TrackNumber] AS [apra_tbSongs_TrackNumber], [tbSongs_1].[Duration] AS [apra_tbSongs_Duration], [tbSongs_1].[RecordLabel] AS [apra_tbSongs_RecordLabel], [tbSongs_1].[Notes] AS [apra_tbSongs_Notes], [tbSongs_1].[Class] AS [apra_tbSongs_Class], [tbSongs_1].[SongID] AS [apra_tbSongs_SongID], [tbSongs_1].[Deleted] AS [apra_tbSongs_Deleted] \nFROM apra.[tbSongs] AS [tbSongs_1]' ()
>>>
Setup details:
- 32bit Arch Linux
- Python 2.7.2
- sqlalchemy 0.7.2
- elixir 0.7.1
- FreeTDS 0.82-5
- unixodbc 2.3.0-1
/etc/odbcinst.ini:
[ODBC Drivers]
tds = Installed
[tds]
Driver = /usr/lib/libtdsodbc.so
Setup = /usr/lib/libtdsodbc.so
/etc/odbc.ini:
[ODBC]
Trace = 0
[DBNAME]
Driver = TDS
Trace = No
Server = xx.xx.xx.xx\dbname
Database = dbname
Port = 1433
I have this error as well and downgrading to unixODBC 2.2.12 fixes it for me (note I can't get PyOBDC to build with 2.2.14, has to be 2.2.12). I'm fairly troubled by the state of the newer releases of ODBC tools for unix (Freetds 0.91 is very problematic as well).
Try removing prepackaged FreeTDS, unixODBC and pyodbc. Rebuilding from sources using version 0.91, 2.3.0 and 2.1.9 respectively has worked for me but it can be a tricky process. I have covered it in some detail on a recent thread on SQLAlchemy group at http://groups.google.com/group/sqlalchemy/browse_thread/thread/971e068032d51dd5
Can you provide a ODBC trace of this occuring. I have only just become aware of this problem and I can't (at the moment) reproduce it. So if you can send me the log of it happing it should be a step in the right direction.
精彩评论