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

-- 



Reply via email to