On Sep 4, 2012, at 2:07 AM, alonn wrote:

> just making sure should I configure it the connection url like this:
> 
> sqlalchemy.second.url = 
> mssql://user:password@SERVER\db?charset=windows-1255&convert_unicode=True?
> 
> because this doesn't seem to work
> 
> what am I missing?

the convert_unicode and encoding needs to be in create_engine() separately.  
Also not sure if you want to be using charset there ?   

create_engine("mssql://user:password@server", encoding='windows-1255', 
convert_unicode=True)




> 
> On Tuesday, September 4, 2012 2:27:39 AM UTC+3, Michael Bayer wrote:
> If the encoding is uniformly coming back as "windows-1255", the engine can be 
> configured with encoding="windows-1255" and "convert_unicode=True" and 
> SQLAlchemy string types will intercept the values and convert.
> 
> You also might try going to your ODBC driver's configuration screen and 
> trying to get it to return UTF-8 at that level, if it supports that.
> 
> On Sep 3, 2012, at 5:35 PM, alonn wrote:
> 
>> the error stack (before my ugly fix in sprox):
>> 
>> URL: http://localhost:8080/adminPriority/activitiess/
>> File 
>> 'D:\\Python27\\learn\\agent\\agent\\lib\\site-packages\\weberror-0.10.3-py2.7.egg\\weberror\\evalexception.py',
>>  line 431 in respond
>>   app_iter = self.application(environ, detect_start_response)
>> File 
>> 'D:\\Python27\\learn\\agent\\agent\\lib\\site-packages\\turbogears2-2.1.3-py2.7.egg\\tg\\configuration.py',
>>  line 825 in remover
>>   return app(environ, start_response)
>> File 
>> 'D:\\Python27\\learn\\agent\\agent\\lib\\site-packages\\repoze.tm2-1.0b2-py2.7.egg\\repoze\\tm\\__init__.py',
>>  line 24 in __call__
>>   result = self.application(environ, save_status_and_headers)
>> File 
>> 'D:\\Python27\\learn\\agent\\agent\\lib\\site-packages\\repoze.who-1.0.19-py2.7.egg\\repoze\\who\\middleware.py',
>>  line 107 in __call__
>>   app_iter = app(environ, wrapper.wrap_start_response)
>> File 
>> 'D:\\Python27\\learn\\agent\\agent\\lib\\site-packages\\toscawidgets-0.9.12-py2.7.egg\\tw\\core\\middleware.py',
>>  line 46 in __call__
>>   return self.wsgi_app(environ, start_response)
>> File 
>> 'D:\\Python27\\learn\\agent\\agent\\lib\\site-packages\\toscawidgets-0.9.12-py2.7.egg\\tw\\core\\middleware.py',
>>  line 72 in wsgi_app
>>   resp = req.get_response(self.application)
>> File 
>> 'D:\\Python27\\learn\\agent\\agent\\lib\\site-packages\\webob-1.0.8-py2.7.egg\\webob\\request.py',
>>  line 1053 in get_response
>>   application, catch_exc_info=False)
>> File 
>> 'D:\\Python27\\learn\\agent\\agent\\lib\\site-packages\\webob-1.0.8-py2.7.egg\\webob\\request.py',
>>  line 1022 in call_application
>>   app_iter = application(self.environ, start_response)
>> File 
>> 'D:\\Python27\\learn\\agent\\agent\\lib\\site-packages\\toscawidgets-0.9.12-py2.7.egg\\tw\\core\\resource_injector.py',
>>  line 70 in _injector
>>   resp = req.get_response(app)
>> File 
>> 'D:\\Python27\\learn\\agent\\agent\\lib\\site-packages\\webob-1.0.8-py2.7.egg\\webob\\request.py',
>>  line 1053 in get_response
>>   application, catch_exc_info=False)
>> File 
>> 'D:\\Python27\\learn\\agent\\agent\\lib\\site-packages\\webob-1.0.8-py2.7.egg\\webob\\request.py',
>>  line 1022 in call_application
>>   app_iter = application(self.environ, start_response)
>> File 
>> 'D:\\Python27\\learn\\agent\\agent\\lib\\site-packages\\beaker-1.5.4-py2.7.egg\\beaker\\middleware.py',
>>  line 73 in __call__
>>   return self.app(environ, start_response)
>> File 
>> 'D:\\Python27\\learn\\agent\\agent\\lib\\site-packages\\beaker-1.5.4-py2.7.egg\\beaker\\middleware.py',
>>  line 152 in __call__
>>   return self.wrap_app(environ, session_start_response)
>> File 
>> 'D:\\Python27\\learn\\agent\\agent\\lib\\site-packages\\routes-1.12.3-py2.7.egg\\routes\\middleware.py',
>>  line 131 in __call__
>>   response = self.app(environ, start_response)
>> File 
>> 'D:\\Python27\\learn\\agent\\agent\\lib\\site-packages\\pylons-1.0-py2.7.egg\\pylons\\wsgiapp.py',
>>  line 107 in __call__
>>   response = self.dispatch(controller, environ, start_response)
>> File 
>> 'D:\\Python27\\learn\\agent\\agent\\lib\\site-packages\\pylons-1.0-py2.7.egg\\pylons\\wsgiapp.py',
>>  line 312 in dispatch
>>   return controller(environ, start_response)
>> File 
>> 'D:\\Python27\\learn\\agent\\agent\\priority-agent\\priorityagent\\lib\\base.py',
>>  line 31 in __call__
>>   return TGController.__call__(self, environ, start_response)
>> File 
>> 'D:\\Python27\\learn\\agent\\agent\\lib\\site-packages\\pylons-1.0-py2.7.egg\\pylons\\controllers\\core.py',
>>  line 211 in __call__
>>   response = self._dispatch_call()
>> File 
>> 'D:\\Python27\\learn\\agent\\agent\\lib\\site-packages\\pylons-1.0-py2.7.egg\\pylons\\controllers\\core.py',
>>  line 162 in _dispatch_call
>>   response = self._inspect_call(func)
>> File 
>> 'D:\\Python27\\learn\\agent\\agent\\lib\\site-packages\\pylons-1.0-py2.7.egg\\pylons\\controllers\\core.py',
>>  line 105 in _inspect_call
>>   result = self._perform_call(func, args)
>> File 
>> 'D:\\Python27\\learn\\agent\\agent\\lib\\site-packages\\turbogears2-2.1.3-py2.7.egg\\tg\\controllers\\dispatcher.py',
>>  line 254 in _perform_call
>>   r = self._call(func, params, remainder=remainder)
>> File 
>> 'D:\\Python27\\learn\\agent\\agent\\lib\\site-packages\\turbogears2-2.1.3-py2.7.egg\\tg\\controllers\\decoratedcontroller.py',
>>  line 116 in _call
>>   output = controller(*remainder, **dict(params))
>> File 
>> 'D:\\Python27\\learn\\agent\\agent\\lib\\site-packages\\tgext.crud-0.3.12-py2.7.egg\\tgext\\crud\\controller.py',
>>  line 120 in get_all
>>   values = self.table_filler.get_value(**kw)
>> File 
>> 'D:\\Python27\\learn\\agent\\agent\\lib\\site-packages\\sprox-0.7rc1-py2.7.egg\\sprox\\fillerbase.py',
>>  line 221 in get_value
>>   value = unicode(value, encoding='utf-8')
>> UnicodeDecodeError: 'utf8' codec can't decode byte 0xee in position 0: 
>> invalid continuation byte
>> 
>> the fix that solves it: change sprox fillebase.py get_value method
>> 
>> like this:
>> 
>>                 if isinstance(value, str):
>>                     try:  # added this to fix unicode problem in CRUD forms 
>> TODO:better implentation
>>                         value = unicode(value, encoding='utf-8')
>> 
>>                     except UnicodeDecodeError: # overriding the default 
>> sprox behavior
>>                         
>>                         #TODO:add chardet checking here
>>                         #return
>>                         value = unicode(value, encoding='windows-1255')
>> 
>> On Friday, August 31, 2012 5:55:10 PM UTC+3, Michael Bayer wrote:
>> when it says UnicodeDecodeError, there should be a big stack trace.
>> 
>> Since I don't know from your description what feature is actually failing to 
>> decode.   I don't understand how a code change in a client of the result set 
>> could workaround such an issue if the decoding issue is on the result side, 
>> for example (if you didn't get the data, you didn't get it).
>> 
>> 
>> On Aug 31, 2012, at 10:44 AM, alonn wrote:
>> 
>>> I'm working on windows 7, where can I find the stack trace?
>>> 
>>> On Friday, August 31, 2012 4:53:15 PM UTC+3, Michael Bayer wrote:
>>> freetds or windows ?   critical 
>>> 
>>> plus:  stack trace?   critical
>>> 
>>> 
>>> 
>>> 
>>> 
>>> On Aug 31, 2012, at 9:28 AM, alonn wrote:
>>> 
>>>> thanks - I use pyodbc 2.1.11 with sqlalchemy 0.7.3
>>>> would upgrading one of them (or both) help me solve this? I saw in 
>>>> sqlalchemy 0.7.7 changlog :
>>>> 
>>>> [feature] Added interim create_engine flag
>>>>     supports_unicode_binds to PyODBC dialect,
>>>>     to force whether or not the dialect
>>>>     passes Python unicode literals to PyODBC 
>>>>     or not.
>>>> 
>>>> would using that solve my problem? how and where should I call that flag?
>>>> 
>>>> 
>>>> On Wednesday, August 29, 2012 12:55:50 AM UTC+3, Michael Bayer wrote:
>>>> what ODBC driver ?   the encoding issues are typically configured with 
>>>> ODBC.    it's a huge difference if you're on the windows drivers, vs. 
>>>> freetds, vs anything else.
>>>> 
>>>> 
>>>> also I use MSSQL 2005 in production financial applications as well.
>>>> 
>>>> 
>>>> On Aug 28, 2012, at 4:43 PM, alonn wrote:
>>>> 
>>>>> some of my sqlalchemy 0.7.3 (with tubrogears 2.1.4) models work with a 
>>>>> mssql 2005 db using pyodbc.
>>>>> 
>>>>> (No can't change this, don't bother suggesting, this is an enterprise 
>>>>> financial system, I can just read and write to certain tables there)
>>>>> 
>>>>> the query returned are encoded windows-1255 instead of utf-8
>>>>> failing to return unicode causes various 'UnicodeDecodeError' error in 
>>>>> sprox and toscawidgets which I can override manualy by rewriting certain 
>>>>> lines in the sprox/tw.forms source code but not exactly an optimal 
>>>>> solution 
>>>>> 
>>>>> is there a  way to specify in the connection url to convert the data to 
>>>>> standard unicode encoding?
>>>>> 
>>>>> currently using the following format:
>>>>> 
>>>>> sqlalchemy.second.url = mssql://user:password@SERVER\db
>>>>> 
>>>>> or maybe changing some parameter in the sqlalchemy engine should do the 
>>>>> trick?
>>>>> 
>>>>> 
>>>>> 
>>>>> thanks for the help
>>>>> 
>>>>> 
>>>>> 
>>>>> -- 
>>>>> You received this message because you are subscribed to the Google Groups 
>>>>> "sqlalchemy" group.
>>>>> To view this discussion on the web visit 
>>>>> https://groups.google.com/d/msg/sqlalchemy/-/xTmE0yTs810J.
>>>>> To post to this group, send email to sqlal...@googlegroups.com.
>>>>> To unsubscribe from this group, send email to 
>>>>> sqlalchemy+...@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 view this discussion on the web visit 
>>>> https://groups.google.com/d/msg/sqlalchemy/-/mIe-QOn7JRgJ.
>>>> To post to this group, send email to sqlal...@googlegroups.com.
>>>> To unsubscribe from this group, send email to 
>>>> sqlalchemy+...@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 view this discussion on the web visit 
>>> https://groups.google.com/d/msg/sqlalchemy/-/wwRZkYf0dFEJ.
>>> To post to this group, send email to sqlal...@googlegroups.com.
>>> To unsubscribe from this group, send email to 
>>> sqlalchemy+...@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 view this discussion on the web visit 
>> https://groups.google.com/d/msg/sqlalchemy/-/DEDYZIu9ecsJ.
>> To post to this group, send email to sqlal...@googlegroups.com.
>> To unsubscribe from this group, send email to 
>> sqlalchemy+...@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 view this discussion on the web visit 
> https://groups.google.com/d/msg/sqlalchemy/-/26NWk6mM5FYJ.
> 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.

-- 
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.

Reply via email to