Touché! Point taken on the commercial software.... :) As a fall-back plan, there is an acceptable workaround. I can explicitly convert the floats I receive into Decimals. Based on Massimo's post, it looks like this will only be an issue for money fields returned from a .executesql statement. For all other queries where I can leverage the DAL, I think web2py will handle things just fine.
I'm going to post a message to the FreeTDS message board and see what I can learn. On Fri, Jul 30, 2010 at 11:08 AM, Michele Comitini <[email protected]> wrote: > > > 2010/7/30 mwolfe02 <[email protected]> >> >> Ideally, I'd like to avoid having to purchase a commercial product. > > Alas you are using a commercial product. > indeed this is what you should look at: > http://www.egenix.com/products/python/mxODBCConnect/ > > That said it could be just a problem with the python adapter of freetds > pymssql. > >> Plus, I don't think it would work. mxODBC appears to be a replacement >> for pyodbc. It looks like mxODBC uses FreeTDS just like pyodbc. The >> problem appears to be with FreeTDS, so mxODBC doesn't look like it >> would be a fix for my particular problem. In fact, mxODBC says as >> much itself: >> > > >> >> (From the mxODBC change log, Changes from 2.0.7 to 3.0.0: >> http://www.egenix.com/products/python/mxODBC/changelog.html) >> >> "Added new experimental subpackage mx.ODBC.FreeTDS which allows >> connecting to MS SQL Server from Unix. This is still far from even >> being called alpha due to the current lack of implementation support >> of many important ODBC APIs in the FreeTDS ODBC driver." >> >> The problem still seems to be FreeTDS. >> >> On Jul 30, 9:42 am, Michele Comitini <[email protected]> >> wrote: >> > you can try with mxodbchttp://www.egenix.com/products/python/mxODBC/ >> > >> > 2010/7/30 mwolfe02 <[email protected]> >> > >> > >> > >> > > For background, refer to related questions on SO: >> > >http://stackoverflow.com/questions/3364699/ >> > >http://stackoverflow.com/questions/3371795/ >> > >> > > I'm developing my app on Windows, but will be deploying it on a Linux >> > > server. The following lines are from the top of my db.py: >> > >> > > if os.name=='posix': #Ubuntu >> > > db = >> > > DAL('mssql://user:[email protected]/TaxDB?DRIVER={FreeTDS}<http://user:[email protected]/TaxDB?DRIVER=%7BFreeTDS%7D> >> > > ', >> > > migrate=False) >> > > elif os.name=='nt': #Windows >> > > db = DAL('mssql://[email protected]/TaxDB_Dev? >> > > Trusted_Connection=Yes', migrate=False) >> > >> > > The problem I am running into is that on Windows, my MS SQL money >> > > fields are returned as Python Decimals. However, on Linux, those same >> > > fields are returned as floats. I think the issue is with FreeTDS. >> > > The above lines are the _only_ lines that are different between my >> > > production and development versions. Obviously, the environments >> > > themselves are vastly different. >> > >> > > Is there an alternative to FreeTDS to connect to SQL Server from >> > > Linux? Do I need to provide some additional info in my connection >> > > string? Am I just stuck because I'm accessing SQL Server from Linux? >> > >> > > Thanks in advance for any insight. >

