Paul's Programming Notes     Archive     Feed     Github

SQLAlchemy's "scale" Argument & WTForms


Note: Unless otherwise stated, this applies to SQLAlchemy 1.0.

Here are a few things I learned while researching the fix for this Flask-Admin Issue #1141:
  • With SQLAlchemy's Generic Float type, the "scale" argument is ignored. "scale" is not listed as an argument and the docs say "Additional arguments here are ignored by the default Float type.". However, the object does have a "scale", but it's always "None".
  • WTForms' "places" default for DecimalField's is 2.
  • The MySQL float does have a "scale" argument, it defaults to "None". MySQL and Postgres have default limits on the length of the precision of floats, MySQL only shows 6 digits after the decimal and Postgres has a default column length of 17.
  • Numeric columns do have a "scale" argument, and the default is "None" in SQLAlchemy 0.7 and 1.0.
  • "decimal_return_scale" was added to both Float and Numeric in SQLAlchemy 0.9.
  • If you raise the number of "places" in WTForms' DecimalField greater than "decimal_return_scale" in the SQLAlchemy field, the digits after the decimal place set in "decimal_return_scale" will show 0's.
  • In SQLAlchemy, "_default_decimal_return_scale = 10" is only used in a property/method called "_effective_decimal_return_scale". The default for "decimal_return_scale" is "None" and not 10. Since "_default_decimal_return_scale" and "_effective_decimal_return_scale" start with an underscore, so it's only intended for internal use.
  • MySQL's "FLOAT" in SQLAlchemy doesn't have "decimal_return_scale". It probably should? REAL and DOUBLE have this.
  • WTForms' FloatField does not have "places".
  • With SQLAlchemy 1.0, "db.DECIMAL()" will create a numeric(28, 6) in Postgres, but it creates a DECIMAL(10,0) in MySQL. This seemed pretty odd, since the default "scale" is "None". Maybe it's just using whatever the default is in each backend.


Sources:

GoDaddy To Amazon Route 53 - Lessons Learned

The first thing you'll want to do is created a "Hosted Zone" with the same A and CNAME records (and any other relevant records that aren't specific to GoDaddy).

When you transfer the domain and it asks you if you want to use the old name servers - answer no. I messed this one up and kept using GoDaddy's "domaincontrol.com" name servers and DNS stopped resolving eventually. If you mess this up too, you'll need to go to the "Hosted Zone" for your site and copy the records in the "NS" list to domain's name servers on the registered domains page.

Installing Postgres 9.5 On OSX

Edit 12/25/2020: I’d recommend using: https://postgresapp.com/

Ended up being surprisingly easy:

brew uninstall postgresql
brew install postgresql-9.5
brew link -f postgresql-9.5
mv /usr/local/var/postgres /usr/local/var/postgres.old
initdb -D /usr/local/var/postgres
# restore old database?
# pg_upgrade -b /usr/local/Cellar/postgresql/9.0.4/bin -B /usr/local/Cellar/postgresql/9.1.2/bin -d /usr/local/var/postgres.old -D /usr/local/var/postgres
# start postgres
pg_ctl -D /usr/local/var/postgres -l logfile start
view raw gistfile1.txt hosted with ❤ by GitHub

New Macbook Pro Setup

I’m finally switching to a Macbook Pro as my personal computer after a few months of using one at work. Local development on OSX is a lot easier and bug-free than on a Windows computer.

I started a gist with what I did for setup:

Important tips:

  • to open applications quickly, command + space and type the application name
  • mac doesn't have an address bar in finder, you need to use command + shift + g to type a directory path
  • mac doesn't have "snap window to screen" like windows does, you need to install moom for this
  • activity monitor = task manager
  • brew install = apt get install (you'll need to install brew)
  • use command + tilde to switch between windows for the same application

Setup:

view raw mac_setup.md hosted with ❤ by GitHub