>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?
>> >
>> >
>> > --
>> >
>> >
>> >
>>
>>
--