I couldn't find anything in the PG docs. If I were to add another postgres 
adapter that specifically handles databases created like this, is that 
something you'd be interested in adding to web2py?

On Friday, March 11, 2011 4:42:11 PM UTC-5, Massimo Di Pierro wrote:
>
> Then web2py cannot do this (yet). You would need to create a view for 
> your tables with lowercase table names or perhaps there is some 
> obscure postgresql parameters to make the queries case sensitive 
> (mysql has it). 
>
> On Mar 11, 2:10 pm, Ross Peoples <ross.p...@gmail.com> wrote: 
> > I should have mentioned that I already did this, so now my table 
> definition matches the one you gave. It was after correcting the definition 
> that I get this message. Again, the tables and fields were created using 
> double-quotes (e.g. CREATE TABLE "GlobalSettings"...), so PostgreSQL 
> requires that all queries use double-quotes when referring to tables and 
> fields created this way. 
> > 
> > If I do a db()._select(db.GlobalSettings.ALL)...notice the underscore, I 
> get: 
> > 
> > SELECT  GlobalSettings.settingID, GlobalSettings.settingName, 
> GlobalSettings.settingValue FROM GlobalSettings; 
> > 
> > But for PostgreSQL to accept the query, it would have to be: 
> > 
> > SELECT  "GlobalSettings"."settingID", "GlobalSettings"."settingName", 
> "GlobalSettings"."settingValue" FROM "GlobalSettings"; 
> > 
> > This is because unless you specifically wrap table and field names with 
> double-quotes, PostgreSQL automatically converts all table and field names 
> to lowercase. 
> > 
> > On Mar 11, 2011, at 3:02 PM, Massimo Di Pierro wrote: 
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > > It cannot be 
> > 
> > > Field('"settingName"', length=255, unique=True), 
> > 
> > > must be 
> > 
> > > Field('settingName', length=255, unique=True), 
> > 
> > > you cannot have quotes in the file name. 
> > > So it should be 
> > 
> > > db.define_table('GlobalSettings', 
> > >    Field('settingName', length=255, unique=True), 
> > >    Field('settingValue', 'text'), 
> > >    Field('settingID', 'id'), 
> > >    sequence_name='GlobalSettings_settingID_seq', 
> > >    migrate=False) 
> > 
> > > Case must match DB. migrate=False because it exists. I am not 100% 
> > > sure but I think this should work. 
> > 
> > > On Mar 11, 12:56 pm, Ross Peoples <ross.p...@gmail.com> wrote: 
> > >> After also adding migrate=False to the table definition, I now get 
> this 
> > >> error: 
> > 
> > >> ProgrammingError: relation "globalsettings" does not exist 
> > >> LINE 1: ...ngs.settingName, GlobalSettings.settingValue FROM 
> GlobalSett... 
> > 
> > >> On Thursday, March 10, 2011 3:02:25 PM UTC-5, Richard wrote: 
> > 
> > >>> remove the " from web2py model and add the sequence name that 
> postgres 
> > >>> create by default with a different name then web2py expect like this 
> : 
> > 
> > >>> db.define_table('GlobalSettings', 
> > >>>     Field('settingName', length=255, unique=True), 
> > >>>     Field('settingValue', 'text'), 
> > >>>     Field('settingID', 'id'), 
> > >>>     sequence_name='GlobalSettings_settingID_seq' 
> > >>> ) 
> > 
> > >>> It should works... 
> > 
> > >>> Richard 
> > 
> > >>> On Thu, Mar 10, 2011 at 2:42 PM, Ross Peoples <ross...@gmail.com> 
> wrote: 
> > 
> > >>>> I have a legacy PostgreSQL database that has its tables and field 
> names 
> > >>>> created using a case-sensitive means. Whenever I try to do a 
> select(), it 
> > >>>> returns no rows, and an insert() fails. This is the error that 
> web2py gives: 
> > 
> > >>>> ProgrammingError: relation "globalsettings_id_seq" does not exist 
> > 
> > >>>> LINE 1: select currval('GlobalSettings_id_Seq') 
> > 
> > >>>> This is the actual table definition from pgAdmin3: 
> > 
> > >>>> CREATE TABLE "GlobalSettings" 
> > >>>> ( 
> > >>>>   "settingName" character varying(255) NOT NULL, 
> > >>>>   "settingValue" text NOT NULL, 
> > >>>>   "settingID" serial NOT NULL, 
> > >>>>   CONSTRAINT "GlobalSettings_pkey" PRIMARY KEY ("settingID") 
> > >>>> ) 
> > 
> > >>>> Attempting to define my table in web2py using double-quotes between 
> > >>>> single-quotes, like this: 
> > 
> > >>>> db.define_table('"GlobalSettings"', 
> > >>>>     Field('"settingName"', length=255, unique=True), 
> > >>>>     Field('"settingValue"', 'text'), 
> > >>>>     Field('"settingID"', 'id') 
> > >>>> ) 
> > 
> > >>>> results in the following error message: SyntaxError: only 
> [0-9a-zA-Z_] allowed 
> > >>>> in table and field names, received "settingName"

Reply via email to