Seems SA checks if table already exist in all_tables system table...
and creates it only if it doesn't exist.
In my case...
SQL> select table_name from all_tables where
table_name='FUNZIONE_CALCOLO', returns:
TABLE_NAME
------------------------------
FUNZIONE_CALCOLO
SQL> select table_name from all_tables where table_name='TARIFFA';
no rows selected
instead :
SQL> desc FUNZIONE_CALCOLO
ERROR:
ORA-04043: object FUNZIONE_CALCOLO does not exist
SQL> desc TARIFFA
ERROR:
ORA-04043: object TARIFFA does not exist
-------------------------------------------
probably it is because I droped the table funzione_calcolo.
Is it regular that FUNZIONE_CALCOLO is in all_tables yet?
-----------------
2.4.4 (#2, Apr 15 2008, 23:43:20)
[GCC 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)]
select table_name from all_tables where table_name=:name
{'name': 'FUNZIONE_CALCOLO'}
select table_name from all_tables where table_name=:name
{'name': 'TARIFFA'}
CREATE TABLE tariffa (
id INTEGER NOT NULL,
cod_funzione_calcolo VARCHAR(5) NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY(cod_funzione_calcolo) REFERENCES funzione_calcolo
(codice)
)
None
ROLLBACK
Traceback (most recent call last):
File "./start-sicer.py", line 16, in ?
from sicer.controllers import Root
File "/home/sfera/release/sicer/controllers/__init__.py", line 3, in ?
from errorhandling import ErrorCatcher
File "/home/sfera/release/sicer/controllers/errorhandling.py", line
16, in ?
from sicer.model import Anagrafica
File "/home/sfera/release/sicer/model/__init__.py", line 1, in ?
from sql import *
File "/home/sfera/release/sicer/model/sql.py", line 21, in ?
database.metadata.create_all(engine)
File "/usr/lib/python2.4/site-packages/sqlalchemy/schema.py", line
1239, in create_all
bind.create(self, checkfirst=checkfirst, tables=tables)
File "/usr/lib/python2.4/site-packages/sqlalchemy/engine/base.py",
line 699, in create
self._run_visitor(self.dialect.schemagenerator, entity,
connection=connection, **kwargs)
File "/usr/lib/python2.4/site-packages/sqlalchemy/engine/base.py",
line 729, in _run_visitor
element.accept_visitor(visitorcallable(conn, **kwargs))
File "/usr/lib/python2.4/site-packages/sqlalchemy/schema.py", line
1266, in accept_visitor
visitor.visit_metadata(self)
File "/usr/lib/python2.4/site-packages/sqlalchemy/ansisql.py", line
798, in visit_metadata
table.accept_visitor(self)
File "/usr/lib/python2.4/site-packages/sqlalchemy/sql.py", line 2713,
in accept_visitor
visitor.visit_table(self)
File "/usr/lib/python2.4/site-packages/sqlalchemy/ansisql.py", line
833, in visit_table
self.execute()
File "/usr/lib/python2.4/site-packages/sqlalchemy/engine/base.py",
line 1215, in execute
return self.connection.execute(self.buffer.getvalue())
File "/usr/lib/python2.4/site-packages/sqlalchemy/engine/base.py",
line 517, in execute
return Connection.executors[c](self, object, *multiparams, **params)
File "/usr/lib/python2.4/site-packages/sqlalchemy/engine/base.py",
line 532, in execute_text
self._execute_raw(context)
File "/usr/lib/python2.4/site-packages/sqlalchemy/engine/base.py",
line 581, in _execute_raw
self._execute(context)
File "/usr/lib/python2.4/site-packages/sqlalchemy/engine/base.py",
line 599, in _execute
raise exceptions.SQLError(context.statement, context.parameters, e)
sqlalchemy.exceptions.SQLError: (DatabaseError) ORA-00942: table or view
does not exist
'\nCREATE TABLE tariffa (\n\tid INTEGER NOT NULL,
\n\tcod_funzione_calcolo VARCHAR(5) NOT NULL, \n\tPRIMARY KEY (id), \n\t
FOREIGN KEY(cod_funzione_calcolo) REFERENCES funzione_calcolo
(codice)\n)\n\n' {}
jo ha scritto:
> hi all,
>
> I'm having problems with database.metadata.create_all.
> The code works perfectly with PostgreSQL but with Oracle it
> doesn't...and it exits with the following error:
>
> ...
> self._execute_raw(context)
> File "/usr/lib/python2.4/site-packages/sqlalchemy/engine/base.py",
> line 581, in _execute_raw
> self._execute(context)
> File "/usr/lib/python2.4/site-packages/sqlalchemy/engine/base.py",
> line 599, in _execute
> raise exceptions.SQLError(context.statement, context.parameters, e)
> sqlalchemy.exceptions.SQLError: (DatabaseError) ORA-00942: table or view
> does not exist
> '\nCREATE TABLE tariffa (\n\tid INTEGER NOT NULL,
> \n\tcod_funzione_calcolo VARCHAR(5) NOT NULL, \n\tPRIMARY KEY (id), \n\t
> FOREIGN KEY(cod_funzione_calcolo) REFERENCES funzione_calcolo
> (codice)\n)\n\n' {}
>
>
> here the source...
> -----------------------------------------------------------------------
> from turbogears import database
> from sqlalchemy import *
> from sqlalchemy.ext.assignmapper import assign_mapper
> from sqlalchemy.ext.selectresults import SelectResultsExt
> database.bind_meta_data()
> session = database.session
> engine = database.metadata.engine
> context = database.session.context
> tbl = {}
>
> tbl['funzione_calcolo']=Table('funzione_calcolo',database.metadata,
> Column('codice', Unicode(5),nullable=False,primary_key=True),
> Column('descrizione', Unicode(200), nullable=False),
> )
> tbl['tariffa']=Table('tariffa',database.metadata,
> Column('id', Integer, Sequence('tariffa_seq'), nullable=False,
> primary_key=True),
> Column('cod_funzione_calcolo', Unicode(5), nullable=False),
>
> ForeignKeyConstraint(['cod_funzione_calcolo'],['funzione_calcolo.codice']),
> )
> database.metadata.create_all(engine)
> -------------------------------------------------------------------------------
>
> what's wrong ?
>
> jo
>
> ps:
> I'm using SA 0.3.10
>
>
> >
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"sqlalchemy" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---