Victor Subervi wrote:
On Wed, Dec 23, 2009 at 3:03 PM, MRAB <pyt...@mrabarnett.plus.com <mailto:pyt...@mrabarnett.plus.com>> wrote:

    Victor Subervi wrote:

        I've isolated the problem in the print-out at the bottom of this
        post. It occurs when these values are passed:

        ['LastDatePrice', 'date', '10', 'yyyy/mm/dd', None],

        Since this is the first datetime that is passed, it would appear
        to be associated with such values, which are processed thus:

           elif typeName == 'datetime':

    Where does the value of typeName come from?

It is the descriptor of the MySQL type.

             print "<input type='text' width='%s' maxlength='%s'
        name='%s' value='%s' /> " \
               "<i>This field takes a datetime up to %s alphanumeric
        characters inclusive.</i>" \
               % (shortNum, str(typeNum), colName, theVal, str(typeNum))

        colName == 'LastDatePrice'
        typeNum = 10

             elif 10 < int(typeNum) < 20:

    If typeNum is 10 then 10 < int(typeNum) < 20 is False.

Thank you for catching that! However, the code is followed by an else clause.

               shortNum = '10'

        Therefore...
        shortNum = '10'

           if whatDo == 'insert':
             theVal = defaultVal
             val = defaultVal

    What's the difference between theVal and val? The names don't help me!
    :-)

    if whatDo == 'insert':
      theVal = defaultVal
      val = defaultVal
    else:
      theVal = val
Since whatDo == 'insert'...
        and
        val = 'yyyy/mm/dd'
        therefore
        theVal = None

[snip]

        If in fact the problem has to do with the None value, how can I
        easily substitute a different value? I tried:

        if theVal == None:

    The Pythonic way is to use "is" when comparing with singletons like

    None.


Can you please explain by example?
Singleton: there is only ever one of certain objects and using "is" lets
you check for identity. For example, consider identical twins; they look
the same, but are not the same person. In programming terms you could
imagine the following scenario:

>>> print first_twin == second_twin
True
>>> print first_twin is second_twin
False

In Python by far the most common singleton is None; you should use "is"
(or "is not") when checking whether (or not) an object is actually None.
There might also be a few cases where a certain implementation of Python
might use singletons for reasons of efficiency, but they are just
optimisations in that implementation and shouldn't be relied on. The
rule is: if you're not checking for identity (and, as I said, by far the most common use is with None), check for equality.


         theVal = ''

        but that didn't capture it.

    What do you mean by "didn't capture it"?

The output was identical to what I originally posted.

I recommend that you write messages and values to a log file along the
path in the code you think it's following and then see whether it's
doing what you think it is and with the values you think it should have.
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to