>From the code, it looks like doing an insert without specifying a field should result in a NULL, not an empty string. However, I think a CSV file with empty fields is handled differently. The .import_from_csv_file() method takes a "null" argument that defaults to "<NULL>" -- so, I think if the CSV file contains a "<NULL>", it will be converted to a NULL in the database insert -- otherwise the value will be inserted as is (presumably even an empty string). To convert empty strings to NULL's, perhaps you just have to do:
db.mytable.import_from_csv_file([file object], null='') Does that work? Anthony On Monday, July 23, 2012 5:58:19 PM UTC-4, Mark Li wrote: > > Aren't those the default values for a Field Contructor? I tried explicitly > adding "notnull=False" and "required=False", and didn't set the default > property, but empty values still come out as an empty string instead of > None. > > On Monday, July 23, 2012 2:48:56 PM UTC-7, viniciusban wrote: >> >> As far as I know, let "notnull=False" and "required=False" for your >> fields and don't set "default" property. >> >> >> >> On 07/23/2012 06:32 PM, Mark Li wrote: >> > Unfortunately the lambda method didn't work, Anthony. Any other ideas >> > for having a None default for empty entries? >> > >> > >> > On a side note, if the 'integer' field type is used, then a blank entry >> > results in a None. Don't know if that helps but it's something I've >> noticed. >> > >> > On Monday, July 23, 2012 2:07:51 PM UTC-7, Anthony wrote: >> > >> > To enter a value of None, this might work: >> > >> > | >> > default=lambda:None >> > | >> > >> > Anthony >> > >> > On Monday, July 23, 2012 5:04:44 PM UTC-4, Anthony wrote: >> > >> > default=None means that no default is specified, not that a >> > default value of None will be inserted. >> > >> > Anthony >> > >> > On Monday, July 23, 2012 5:02:33 PM UTC-4, Mark Li wrote: >> > >> > I have a table defined in the following manner: >> > >> > db.define_table('songinfo', >> > Field('songtitle'), >> > Field('artist')) >> > >> > When I add an empty entry, or upload a CSV with empty >> > values, I can only access those values with a database call >> like >> > >> > songs = db(db.songinfo.artist=="").select() >> > >> > as opposed to db(db.songinfo.artist==None).select() >> > >> > >> > The web2py book states that fields default=None, but I'm >> > getting an empty string. Is there an appropriate way to >> have >> > None instead of an empty string in the database? >> > >> > >> > -- >> > >> > >> > >> >> --