yeah, you need to quote them though!!! 
MSSQL for example doesn't allow to do
select * from 123a
but works if you select * from [123a]
PS: fields with only integers in names are to be quoted as well (this 
happens to all dbs adhering to T-SQL standard)

"select 123 from mytable" returns a column without name with the integer 
value 123 repeated for all the lines contained into a table.

On Friday, September 14, 2012 4:04:01 AM UTC+2, Massimo Di Pierro wrote:
>
> Please open a ticket about this. For now it should safe for you to change 
> the regex in the source. I assumed (incorrectly) that SQL did not allow 
> table/field names starting with a number.
>
> Massimo
>
> On Thursday, 13 September 2012 19:58:48 UTC-5, Adi wrote:
>>
>> for the convenience i pulled out both versions, and my suggested change:
>> 1.99.7 cleanup: 
>> def cleanup(text):
>>     """
>>     validates that the given text is clean: only contains [0-9a-zA-Z_]
>>     """
>>
>>     if re.compile('[^0-9a-zA-Z_]').findall(text):
>>         raise SyntaxError, \
>>             'only [0-9a-zA-Z_] allowed in table and field names, received 
>> %s' \
>>             % text
>>     return text
>>
>> 2.08 cleanup: 
>>
>> REGEX_ALPHANUMERIC = re.compile('^[a-zA-Z]\w*$')
>>
>> def cleanup(text):
>>     """
>>     validates that the given text is clean: only contains [0-9a-zA-Z_]
>>     """
>>     if not REGEX_ALPHANUMERIC.match(text):
>>         raise SyntaxError, 'invalid table or field name: %s' % text
>>     return text
>>
>>
>> >>> REGEX_ALPHANUMERIC = re.compile('^[a-zA-Z]\w*$')
>> >>> REGEX_ALPHANUMERIC.match('40')
>> >>> print REGEX_ALPHANUMERIC.match('40')
>> None
>>
>> i changed into this and all works good:
>> >>> REGEX_ALPHANUMERIC = re.compile('^[0-9a-zA-Z]\w*$')
>> >>> print REGEX_ALPHANUMERIC.match('40aaa_aa').span()
>> (0, 8)
>>
>>
>>
>> On Thursday, September 13, 2012 8:28:43 PM UTC-4, Adi wrote:
>>>
>>> One of my fields is 40off_sh (legacy MySQL db), and all works fine in 
>>> 1.97. Seems like cleanup function in dal doesn't like the numeric part at 
>>> the beginning of field name, or I'm reading it wrong? I checked the table 
>>> and the field is in, so it's not missing. 
>>>
>>> I can't change the field name, since it's used by other applications, so 
>>> not sure what would you recommend to do here?
>>>
>>> Thanks,
>>> Adnan
>>>
>>> Traceback (most recent call last):
>>>   File "/opt/web-apps/web2py/gluon/restricted.py", line 209, in restricted
>>>     exec ccode in environment
>>>   File "/opt/web-apps/web2py/applications/thane_us/models/db_1_common.py", 
>>> line 182, in <module>
>>>     Field('40off_sh', 'boolean',),
>>>   File "/opt/web-apps/web2py/gluon/dal.py", line 8396, in __init__
>>>     self.name = fieldname = cleanup(fieldname)
>>>   File "/opt/web-apps/web2py/gluon/dal.py", line 4769, in cleanup
>>>     raise SyntaxError, 'invalid table or field name: %s' % text
>>> SyntaxError: invalid table or field name: 40off_sh
>>>
>>>
>>>

-- 



Reply via email to