Massimo, I realize I didn't address your question about connecting to the same database.
In my original post it did show that I was connecting to different databases (although the dev database is just a restore of the production database backup). However, I changed those lines to connect to the exact same database with the exact same credentials and got the same results: if os.name=='posix': #Ubuntu db = DAL('mssql://user:p...@10.0.8.30/TaxDB?DRIVER={FreeTDS}', migrate=False) elif os.name=='nt': #Windows db = DAL('mssql://user:p...@10.0.8.30/TaxDB', migrate=False) On Jul 30, 10:43 am, mwolfe02 <michael.joseph.wo...@gmail.com> wrote: > I'm using .executesql. I added a line to sql.py for debugging > purposes. It returns the second column of the first row of results (a > SUM of a SQL Server money column): > > diff --git a/gluon/sql.py b/gluon/sql.py > --- a/gluon/sql.py > +++ b/gluon/sql.py > @@ -1389,6 +1389,7 @@ > data = self._cursor.fetchall() > # convert the list for each row into a dictionary so it's > # easier to work with. row['field_name'] rather than > row[0] > + raise RuntimeError(type(data[0][1])) > return [dict(zip(fields,row)) for row in data] > # see if any results returned from database > try: > > When I run on Windows, I get: > > RuntimeError: <class 'decimal.Decimal'> > > When I run on Linux, I get: > > RuntimeError: <type 'float'> > > On Jul 30, 10:32 am, mdipierro <mdipie...@cs.depaul.edu> wrote: > > > > > Are they both connecting to the same database? > > Can you provide an example of how you insert and how you extract data? > > > This is to understand the issue better. In fact > > gluon/sql.py contains the following code: > > > ... > > elif field.type[:7] == 'decimal' and value != None: > > decimals = [int(x) for x in > > field.type[8:-1].split(',')][-1] > > if field._db._dbname == 'sqlite': > > value = ('%.'+str(decimals)+'f') % value > > if not isinstance(value,decimal.Decimal): > > value = decimal.Decimal(str(value)) > > ... > > > so technically even if the database where to return float (wrong), > > web2py should still return decimal. Is this the case for you? > > > On Jul 30, 8:35 am, mwolfe02 <michael.joseph.wo...@gmail.com> wrote: > > > > For background, refer to related questions on > > > SO:http://stackoverflow.com/questions/3364699/http://stackoverflow.com/q... > > > > 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:p...@10.0.8.30/TaxDB?DRIVER={FreeTDS}', > > > migrate=False) > > > elif os.name=='nt': #Windows > > > db = DAL('mssql://u...@127.0.0.1/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.