Thanks, Jim. After thinking it through I've settled on the following approach:
### Define the config table.
db.define_table('config',
Field('parmA','integer', default=0),
Field('parmB','string', default=''),
# etc.
)
db.commit()
# Initialize the only allowed row with default values.
if db(db.config).isempty():
db.config.insert()
db.commit()
# Forbid further inserts, making this a one row table (at least as far as pyDAL
# is concerned). Attempts to insert will raise an exception and create a ticket in
# py4web.
def no_insert_callback():
raise Exception("config is a one row table: attempt to insert aborted")
db.config._before_insert.append(no_insert_callback)
It's not as satisfying as having the check done in the db, but it does what I need.