Python 2.7, on windows using pyodbc and whatever the default driver is. Not sure if the problem exists on FreeTDS.
Here's an example of the ProgrammingError that is raised when I don't cast the filter() query parameter text: File "C:\Python27\lib\site-packages\sqlalchemy\orm\query.py", line 2320, in all return list(self) File "C:\Python27\lib\site-packages\sqlalchemy\orm\query.py", line 2438, in __iter__ return self._execute_and_instances(context) File "C:\Python27\lib\site-packages\sqlalchemy\orm\query.py", line 2453, in _execute_and_instances result = conn.execute(querycontext.statement, self._params) File "C:\Python27\lib\site-packages\sqlalchemy\engine\base.py", line 729, in execute return meth(self, multiparams, params) File "C:\Python27\lib\site-packages\sqlalchemy\sql\elements.py", line 322, in _execute_on_connection return connection._execute_clauseelement(self, multiparams, params) File "C:\Python27\lib\site-packages\sqlalchemy\engine\base.py", line 826, in _execute_clauseelement compiled_sql, distilled_params File "C:\Python27\lib\site-packages\sqlalchemy\engine\base.py", line 958, in _execute_context context) File "C:\Python27\lib\site-packages\sqlalchemy\engine\base.py", line 1159, in _handle_dbapi_exception exc_info File "C:\Python27\lib\site-packages\sqlalchemy\util\compat.py", line 199, in raise_from_cause reraise(type(exception), exception, tb=exc_tb) File "C:\Python27\lib\site-packages\sqlalchemy\engine\base.py", line 951, in _execute_context context) File "C:\Python27\lib\site-packages\sqlalchemy\engine\default.py", line 436, in do_execute cursor.execute(statement, parameters) ProgrammingError: (ProgrammingError) ('42000', '[42000] [Microsoft][ODBC SQL Server Driver][SQL Server]The data types varchar(max) and ntext are incompatible in the equal to operator. (402) (SQLExecDirectW); [42000] [Microsoft][ODBC SQL Server Driver][SQL Server]Statement(s) could not be prepared. (8180)') [....] And here's the relevant stack trace for the UnicodeDecodeError that thows on a similar (but different) query with a text parameter passed to filter. I believe the problem is when the database string comes back and fails to be decoded: [Script ... ] line 450, in get AnnotationTypes.tag_or_inline == self.tag_or_inline).all() File "C:\Python27\lib\site-packages\sqlalchemy\orm\query.py", line 2320, in all return list(self) File "C:\Python27\lib\site-packages\sqlalchemy\orm\loading.py", line 76, in instances labels) for row in fetch] File "C:\Python27\lib\site-packages\sqlalchemy\orm\query.py", line 3523, in proc return row[column] UnicodeDecodeError: 'utf8' codec can't decode byte 0x93 in position 506: invalid start byte On Sunday, March 6, 2016 at 6:59:44 PM UTC-5, Mike Bayer wrote: > > Can you share a stack trace please ? Encoding operations can occur in > many places and I don't see that identified here. Also this is Python 3? > What OS platform and ODBC driver / configuration as well? If freetds > please share your freetds config too. > > On Mar 4, 2016, at 2:51 PM, Tim Pierson <tim.p...@gmail.com <javascript:>> > wrote: > > I've seen a couple of issues regarding mssql and drivers handling of > strings but I haven't been able to resolve my problem. > > I have a flask app with flask-sqlalchemy models defined and a simple query > is throwing the above complaint about decoding the string. > > My connection string: > > mssql+pyodbc://[...]/[...]?trusted_connection=yes&charset=utf8&deprecate_large_types=True > A > > > Which is given to the SQLAlchemy class instance db after the initialization > of the app with: > > > db.init_app(app) > > The offending model: > > > class Annotations(db.Model): > id = db.Column(db.Integer, primary_key=True) > creation_date = db.Column(db.DateTime, default=datetime.datetime.now) > created_by = db.Column(db.String, nullable=False) > annotation = db.Column(sqlalchemy.Unicode, nullable=False) > annotation_type_id = db.Column(db.Integer, > db.ForeignKey('AnnotationTypes.id')) > > > > The query: > > > db.session.query(Annotations.annotation).all() > > > I've replaced the original column type db.String with sqlalchemy.Unicode on > the field that throws the error as per an earlier question on this list but > it hasn't resolved the problem. > > > Could someone offer any pointers? > > > Thanks, > > -- > 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+...@googlegroups.com <javascript:>. > To post to this group, send email to sqlal...@googlegroups.com > <javascript:>. > 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.