Hi all,
this afternoon I stumbled into a bug [1] (or I haven't found the right
setting yet ;)) with SQLObject with PostgreSQL.
To summarise, I have to work with a database that already exists, an gets
queried by other applications as well. So I cannot change the DB layout.
The guy that created the database (ehum... that would be me) though it was
a brilliant idea to write it all in camel-back notation (actually I do
that in all databases). Now, PostgreSQL requires table names, column
names, and all other objects containing capital letters to be enclosed in
double quotes. Otherwise it converts it all to lowercase. So
SELECT * FROM Hotel;
becomes
SELECT * FROM hotel;
And that table does not exist.
I got around the problem by adding a |table = '"Hotel"'| statement to
sqlmeta. So far so good. I can query the database. But, when I try to
insert a new row, it needs to get the next insert id, where it fails
horribly:
-----------------------------------------------------------------------------------
>>> x = Hotel(name="foo", address=None, owner=None, establishment=None)
Traceback (most recent call last):
File "<console>", line 1, in ?
File
"/usr/lib/python2.4/site-packages/SQLObject-0.7.1dev_r1675-py2.4.egg/sqlobject/declarative.py",
line 92, in _wrapper
return_value = fn(self, *args, **kwargs)
File
"/usr/lib/python2.4/site-packages/SQLObject-0.7.1dev_r1675-py2.4.egg/sqlobject/main.py",
line 1197, in __init__
self._create(id, **kw)
File
"/usr/lib/python2.4/site-packages/SQLObject-0.7.1dev_r1675-py2.4.egg/sqlobject/main.py",
line 1224, in _create
self._SO_finishCreate(id)
File
"/usr/lib/python2.4/site-packages/SQLObject-0.7.1dev_r1675-py2.4.egg/sqlobject/main.py",
line 1248, in _SO_finishCreate
id, names, values)
File
"/usr/lib/python2.4/site-packages/SQLObject-0.7.1dev_r1675-py2.4.egg/sqlobject/dbconnection.py",
line 759, in queryInsertID
return self._dbConnection._queryInsertID(
File
"/usr/lib/python2.4/site-packages/SQLObject-0.7.1dev_r1675-py2.4.egg/sqlobject/postgres/pgconnection.py",
line 126, in _queryInsertID
c.execute("SELECT NEXTVAL('%s')" % sequenceName)
ProgrammingError: ERROR: invalid name syntax
SELECT NEXTVAL('""Hotel"_"idHotel"_seq"')
-----------------------------------------------------------------------------------
The last line reveals that it has trouble to deal with the added quotes.
Is there a possibility to get around this, or is the only way to modify
SQLObject? I was already trying to start with the latter option, but I
have no idea where to start. Where should these kind of transformations go?
References:
[1]:
http://sourceforge.net/tracker/index.php?func=detail&aid=1541095&group_id=74338&atid=540672
Best regards,
Michel Albert
--
Using Opera's revolutionary e-mail client: http://www.opera.com/mail/
-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
sqlobject-discuss mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/sqlobject-discuss