Brilliant - thank you very much for the thoughtful reply. I actually set it as a session var bc there are several tables with a decimal field that I want to be consistent with each other, BUT I really appreciate your point about accidentally triggering db migrations. I hadn't considered that.
-jl On Thursday, December 28, 2017 at 3:18:41 PM UTC-7, Anthony wrote: > > On Thursday, December 28, 2017 at 11:22:25 AM UTC-5, Jordan Ladora wrote: >> >> Hi, >> >> I'm using postgres and have a table- >> >> db.define_table('volumes', >> Field('vol', 'decimal(100, session.decplaces)', default=0, >> readable=False, writable=False), >> auth.signature, migrate=True, >> ) >> > > Notice that 'decimal(100, session.decplaces)' is a string literal, not > Python code calling a decimal() function. The string literal is parsed by > the DAL, extracting the strings "100" and "session.decplaces", expecting > each to be interpretable as an integer. Of course, the string > "session.decplaces" is not an integer, so you get an error. Instead, you > have to create a string that includes the relevant integer value: > > 'decimal(100, %s)' % session.decplaces > > which will ultimately generate the string: > > 'decimal(100, 7)' > > Generally, though, storing the number of decimal places in a session > variable is probably not a good idea. Presumably you are using the session > because you want to allow different user sessions to have different numbers > of decimal places. But that doesn't work because the decimal places can > affect the database schema (depending on the database) -- so every time a > different user makes a request, you'll end up running a database migration > if migrations are turned on, or otherwise there will be no point to > specifying the different decimal places if migrations are turned off. In > any case, you will not end up with custom decimal places for each user, as > the decimal places are defined for an entire column, not per row. Pick one > decimal place and use it for all users (which means there is no reason to > store it in the session). > > Anthony > -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.