Using sqlobject 0.9.9 with pymssql 1.0.1 on RHEL 5.3 (the
aforementioned have been installed with yum via either the base OS
packaeges or EPEL).

I have a class defined similar to the following:

class SystemsInfo(SQLObject):
  class sqlmeta:
    style = MixedCaseStyle(longID=True)
    fromDatabase = False
    table = 'SystemsInfo'
    idType = str
    idName = 'SystemName'
    lazyUpdate = True

  Department = StringCol(length=30, default=None)
  Vendor = StringCol(length=80, default=None)
  Model = StringCol(length=80, default=None)
  ... (lots more columns)

And eventually a very simple query as follows:

  a = SystemsInfo.select(SystemsInfo.q.id == "SYSNAME")
  item = a.getOne()

Debug output shows the following:

 1/Select  :  SELECT SystemsInfo.SystemName, SystemsInfo.Department,
  SystemsInfo.Vendor, SystemsInfo.Model FROM SystemsInfo WHERE
  ((SystemsInfo.SystemName) = ('SYSNAME'))
 1/QueryR  :  SELECT SystemsInfo.SystemName, SystemsInfo.Department,
  SystemsInfo.Vendor, SystemsInfo.Model FROM SystemsInfo WHERE
  ((SystemsInfo.SystemName) = ('SYSNAME'))

(Truncated some of the columns obviously)

But I get the following backtrace:

Traceback (most recent call last):
  File "./matrix", line 206, in ?
    main(sys.argv)
  File "./matrix", line 171, in main
    item = a.getOne()
  File "/usr/lib/python2.4/site-packages/sqlobject/sresults.py", line 255, in 
getOne
    results = list(self)
  File "/usr/lib/python2.4/site-packages/sqlobject/sresults.py", line 162, in 
__iter__
    return iter(list(self.lazyIter()))
  File "/usr/lib/python2.4/site-packages/sqlobject/sresults.py", line 170, in 
lazyIter
    return conn.iterSelect(self)
  File "/usr/lib/python2.4/site-packages/sqlobject/dbconnection.py", line 410, 
in iterSelect
    select, keepConnection=False)
  File "/usr/lib/python2.4/site-packages/sqlobject/dbconnection.py", line 798, 
in __init__
    self.dbconn._executeRetry(self.rawconn, self.cursor, self.query)
  File "/usr/lib/python2.4/site-packages/sqlobject/dbconnection.py", line 344, 
in _executeRetry
    return cursor.execute(query)
  File "/usr/lib/python2.4/site-packages/pymssql.py", line 188, in execute
    raise OperationalError, e[0]
pymssql.OperationalError: SQL Server message 170, severity 15, state 1, line 1:
Line 1: Incorrect syntax near '='.

Now, it appears to me the syntax shown in the debug output is valid, an
indeed running it from isql seems to work fine.

However, I inspected the query via tcpdump/wireshark and noticed that
in the packet, the portion of the query after WHERE
((SystemsInfo.SystemName) = is some funky unprintable characters and
certainly not the name of the system...

Other queries seem to show the same thing happening... strings I am
providing to sqlobject are getting transmitted as gibberish even though
sqlobject's debug output shows them as valid.

Almost seems like a locale type issue...

Anyone have any ideas on what the fix is here?

Thanks,
Ray


------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with 
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
sqlobject-discuss mailing list
sqlobject-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sqlobject-discuss

Reply via email to