From: janemba <cap...@gm...> - 2017-02-05 18:16:59
|
Hi, I have an issue with table name. I use my own naming for class name but it doesn't correspond to the table name. So, I use sql_meta with table attribute but it doesn't work. I have the following error : sqlobject.dberrors.ProgrammingError: Table 'foo.bar' doesn't exist Is it possible to use custom class name that do not correspond to table name ? Cheers, |
From: Oleg B. <ph...@ph...> - 2017-02-05 18:43:09
|
On Sun, Feb 05, 2017 at 07:16:48PM +0100, janemba <cap...@gm...> wrote: > Hi, > > I have an issue with table name. I use my own naming for class name but > it doesn't correspond to the table > name. So, I use sql_meta with table attribute but it doesn't work. sqlmeta, not sql_meta. > I have the following error : > > sqlobject.dberrors.ProgrammingError: Table 'foo.bar' doesn't exist > > Is it possible to use custom class name that do not correspond to table > name ? Works for me. Example: from sqlobject import * __connection__ = "sqlite:/:memory:?debug=1&debugOutput=1" class Person(SQLObject): class sqlmeta: table = 'city_person' name = StringCol() pets = MultipleJoin('Animal', joinColumn='owner_id') class Animal(SQLObject): class sqlmeta: table = 'city_animal' name = StringCol() owner = ForeignKey('Person') Person.createTable() Animal.createTable() Debug output: 1/QueryR : CREATE TABLE city_person ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT ) 2/QueryR : CREATE TABLE city_animal ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, owner_id INT CONSTRAINT owner_id_exists REFERENCES city_person(id) ) > Cheers, Oleg. -- Oleg Broytman http://phdru.name/ ph...@ph... Programmers don't die, they just GOSUB without RETURN. |
From: janemba <cap...@gm...> - 2017-02-05 20:01:26
|
On 02/05/2017 07:43 PM, Oleg Broytman wrote: > On Sun, Feb 05, 2017 at 07:16:48PM +0100, janemba <cap...@gm...> wrote: >> Hi, >> >> I have an issue with table name. I use my own naming for class name but >> it doesn't correspond to the table >> name. So, I use sql_meta with table attribute but it doesn't work. > sqlmeta, not sql_meta. > >> I have the following error : >> >> sqlobject.dberrors.ProgrammingError: Table 'foo.bar' doesn't exist >> >> Is it possible to use custom class name that do not correspond to table >> name ? > Works for me. Example: > > from sqlobject import * > > __connection__ = "sqlite:/:memory:?debug=1&debugOutput=1" > > class Person(SQLObject): > class sqlmeta: > table = 'city_person' > name = StringCol() > pets = MultipleJoin('Animal', joinColumn='owner_id') > > class Animal(SQLObject): > class sqlmeta: > table = 'city_animal' > name = StringCol() > owner = ForeignKey('Person') > > Person.createTable() > Animal.createTable() > > Debug output: > > 1/QueryR : CREATE TABLE city_person ( > id INTEGER PRIMARY KEY AUTOINCREMENT, > name TEXT > ) > 2/QueryR : CREATE TABLE city_animal ( > id INTEGER PRIMARY KEY AUTOINCREMENT, > name TEXT, > owner_id INT CONSTRAINT owner_id_exists REFERENCES city_person(id) > ) > That's strange, here what I do : class User(sqlobject.SQLObject): class sql_meta: table = 'tbl_user' idName = 'user_id' idType = int user_firstname = sqlobject.StringCol(length=45) user_lastname = sqlobject.StringCol(length=45) user_email = sqlobject.StringCol(length=45) user_phone = sqlobject.StringCol(length=20) user_password = sqlobject.StringCol(length=128) user_city = sqlobject.StringCol(length=45) user_country = sqlobject.StringCol(length=45) User.get(1) 1/QueryOne: SELECT user_firstname, user_lastname, user_email, user_phone, user_password, user_city, user_country FROM user WHERE ((user.id) = (1)) |
From: Oleg B. <ph...@ph...> - 2017-02-05 20:07:58
|
Please reread carefully all my comments and the code in the previous message. I already pointed to the root of the problem. On Sun, Feb 05, 2017 at 09:01:15PM +0100, janemba <cap...@gm...> wrote: > On 02/05/2017 07:43 PM, Oleg Broytman wrote: > > On Sun, Feb 05, 2017 at 07:16:48PM +0100, janemba <cap...@gm...> wrote: > >> Hi, > >> > >> I have an issue with table name. I use my own naming for class name but > >> it doesn't correspond to the table > >> name. So, I use sql_meta with table attribute but it doesn't work. > > sqlmeta, not sql_meta. > > > >> I have the following error : > >> > >> sqlobject.dberrors.ProgrammingError: Table 'foo.bar' doesn't exist > >> > >> Is it possible to use custom class name that do not correspond to table > >> name ? > > Works for me. Example: > > > > from sqlobject import * > > > > __connection__ = "sqlite:/:memory:?debug=1&debugOutput=1" > > > > class Person(SQLObject): > > class sqlmeta: > > table = 'city_person' > > name = StringCol() > > pets = MultipleJoin('Animal', joinColumn='owner_id') > > > > class Animal(SQLObject): > > class sqlmeta: > > table = 'city_animal' > > name = StringCol() > > owner = ForeignKey('Person') > > > > Person.createTable() > > Animal.createTable() > > > > Debug output: > > > > 1/QueryR : CREATE TABLE city_person ( > > id INTEGER PRIMARY KEY AUTOINCREMENT, > > name TEXT > > ) > > 2/QueryR : CREATE TABLE city_animal ( > > id INTEGER PRIMARY KEY AUTOINCREMENT, > > name TEXT, > > owner_id INT CONSTRAINT owner_id_exists REFERENCES city_person(id) > > ) > > > > That's strange, here what I do : > > class User(sqlobject.SQLObject): > class sql_meta: > table = 'tbl_user' > idName = 'user_id' > idType = int > > user_firstname = sqlobject.StringCol(length=45) > user_lastname = sqlobject.StringCol(length=45) > user_email = sqlobject.StringCol(length=45) > user_phone = sqlobject.StringCol(length=20) > user_password = sqlobject.StringCol(length=128) > user_city = sqlobject.StringCol(length=45) > user_country = sqlobject.StringCol(length=45) > > User.get(1) > > 1/QueryOne: SELECT user_firstname, user_lastname, user_email, > user_phone, user_password, user_city, user_country FROM user WHERE > ((user.id) = (1)) Oleg. -- Oleg Broytman http://phdru.name/ ph...@ph... Programmers don't die, they just GOSUB without RETURN. |
From: janemba <cap...@gm...> - 2017-02-05 20:09:11
|
On 02/05/2017 09:07 PM, Oleg Broytman wrote: > Please reread carefully all my comments and the code in the previous > message. I already pointed to the root of the problem. > > On Sun, Feb 05, 2017 at 09:01:15PM +0100, janemba <cap...@gm...> wrote: >> On 02/05/2017 07:43 PM, Oleg Broytman wrote: >>> On Sun, Feb 05, 2017 at 07:16:48PM +0100, janemba <cap...@gm...> wrote: >>>> Hi, >>>> >>>> I have an issue with table name. I use my own naming for class name but >>>> it doesn't correspond to the table >>>> name. So, I use sql_meta with table attribute but it doesn't work. >>> sqlmeta, not sql_meta. >>> >>>> I have the following error : >>>> >>>> sqlobject.dberrors.ProgrammingError: Table 'foo.bar' doesn't exist >>>> >>>> Is it possible to use custom class name that do not correspond to table >>>> name ? >>> Works for me. Example: >>> >>> from sqlobject import * >>> >>> __connection__ = "sqlite:/:memory:?debug=1&debugOutput=1" >>> >>> class Person(SQLObject): >>> class sqlmeta: >>> table = 'city_person' >>> name = StringCol() >>> pets = MultipleJoin('Animal', joinColumn='owner_id') >>> >>> class Animal(SQLObject): >>> class sqlmeta: >>> table = 'city_animal' >>> name = StringCol() >>> owner = ForeignKey('Person') >>> >>> Person.createTable() >>> Animal.createTable() >>> >>> Debug output: >>> >>> 1/QueryR : CREATE TABLE city_person ( >>> id INTEGER PRIMARY KEY AUTOINCREMENT, >>> name TEXT >>> ) >>> 2/QueryR : CREATE TABLE city_animal ( >>> id INTEGER PRIMARY KEY AUTOINCREMENT, >>> name TEXT, >>> owner_id INT CONSTRAINT owner_id_exists REFERENCES city_person(id) >>> ) >>> >> That's strange, here what I do : >> >> class User(sqlobject.SQLObject): >> class sql_meta: >> table = 'tbl_user' >> idName = 'user_id' >> idType = int >> >> user_firstname = sqlobject.StringCol(length=45) >> user_lastname = sqlobject.StringCol(length=45) >> user_email = sqlobject.StringCol(length=45) >> user_phone = sqlobject.StringCol(length=20) >> user_password = sqlobject.StringCol(length=128) >> user_city = sqlobject.StringCol(length=45) >> user_country = sqlobject.StringCol(length=45) >> >> User.get(1) >> >> 1/QueryOne: SELECT user_firstname, user_lastname, user_email, >> user_phone, user_password, user_city, user_country FROM user WHERE >> ((user.id) = (1)) > Oleg. Oups sorry...problem fixed :) |