Hello All,

Just started using SQLObject yesterday, so if I made a rookie mistake
please tell me. It appears SQLObject doesn't allow me to have the same
column name as my table name. Here is the MySQL table definition:
CREATE TABLE `sysname` (
`sysname_id` int(11) NOT NULL auto_increment,
`sysname` varchar(64) NOT NULL,
PRIMARY KEY  (`sysname_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

And the corresponding SQLObject code:
class Sysname(SQLObject):
    class sqlmeta:
        fromDatabase = True
        idName = "sysname_id"

    def getSysnameID(cls):
        sysname = platform.system()
        for s in cls.selectBy(sysname=sysname):
            return s.id

        return cls(sysname=sysname).id
    getSysnameID = classmethod(getSysnameID)

print Sysname.getSysnameID()

I get the following traceback from SQLObject:
Traceback (most recent call last):
  File "knightly/machine.py", line 22, in ?
    print Sysname.getSysnameID()
  File "knightly/machine.py", line 16, in getSysnameID
    for s in cls.selectBy(sysname=sysname):
  File 
"/Users/coleb/svn_knightly/trunk/backend/knightly/lib/sqlobject/sresults.py",
line 185, in __iter__
    return iter(list(self.lazyIter()))
  File 
"/Users/coleb/svn_knightly/trunk/backend/knightly/lib/sqlobject/sresults.py",
line 193, in lazyIter
    return conn.iterSelect(self)
  File 
"/Users/coleb/svn_knightly/trunk/backend/knightly/lib/sqlobject/dbconnection.py",
line 400, in iterSelect
    select, keepConnection=False)
  File 
"/Users/coleb/svn_knightly/trunk/backend/knightly/lib/sqlobject/dbconnection.py",
line 636, in __init__
    self.query = self.dbconn.queryForSelect(select)
  File 
"/Users/coleb/svn_knightly/trunk/backend/knightly/lib/sqlobject/dbconnection.py",
line 414, in queryForSelect
    return self.sqlrepr(select.queryForSelect())
  File 
"/Users/coleb/svn_knightly/trunk/backend/knightly/lib/sqlobject/sresults.py",
line 45, in queryForSelect
    columns = [self.sourceClass.q.id] + [getattr(self.sourceClass.q,
x.name) for x in self.sourceClass.sqlmeta.columnList]
  File 
"/Users/coleb/svn_knightly/trunk/backend/knightly/lib/sqlobject/sqlbuilder.py",
line 386, in __getattr__
    return self._getattrFromForeignKey(column, attr)
  File 
"/Users/coleb/svn_knightly/trunk/backend/knightly/lib/sqlobject/sqlbuilder.py",
line 403, in _getattrFromForeignKey
    ret =  getattr(self, column.name)==getattr(self.soClass,
'_SO_class_'+column.foreignKey).q.id
TypeError: cannot concatenate 'str' and 'NoneType' objects

If I change the column's name `sysname` to `name` and change the code
accordingly everything works fine. Is this a feature or a bug?

Thanks,
Brian

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
sqlobject-discuss mailing list
sqlobject-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sqlobject-discuss

Reply via email to