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

Reply via email to