Debo extraer datos de una base de datos de Oracle. ¿Cómo puedo averiguar qué esquema está definido en la base de datos? Cuando no defino ningún esquema en la descripción de Metadata(), no encuentro tablas. gracias por su ayuda,esquema sqlalchemy oracle
Respuesta
El esquema predeterminado de Oracle coincide con el nombre de usuario que se utilizó en la conexión Oracle. Si no ve ninguna tabla, significa que las tablas se crean en otro esquema.
Parece que usted tiene aquí dos cuestiones:
1) Acerca de los esquemas de Oracle - cómo encontrar esquema y las tablas en Oracle
2) sobre reflexiones SQLAlchemy - cómo especificar esquema de Oracle para la tabla
Puede encontrar la respuesta a la primera pregunta en muchos lugares. Es decir. aquí: https://stackoverflow.com/a/2247758/1296661
Responder a la segunda pregunta: Tabla constructor de la clase tiene argumento esquema para especificar el esquema de tabla si es diferente del esquema de usuario por defecto. Vea más aquí http://docs.sqlalchemy.org/en/rel_0_7/core/schema.html#sqlalchemy.schema.Table
Aquí está el código python para responder la segunda pregunta. Tendrá que los valores de configuración de conexión db y nombre de la tabla para que coincida con su caso:
from sqlalchemy import Table
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import create_engine
engine = create_engine('oracle://<user_name>:<password>@<hostname>:1521/<instance name>', echo=True)
Base = declarative_base()
reflected_table = Table('<Table name>',
Base.metadata,
autoload=True,
autoload_with=engine,
schema='<Schema name other then user_name>')
print [c.name for c in reflected_table.columns]
p = engine.execute("SELECT OWNER,count(*) table_count FROM ALL_OBJECTS WHERE OBJECT_TYPE = 'TABLE' GROUP BY OWNER");
for r in p:
print r
Buena suerte con el uso y función SQLSchema reflexión - es un montón de diversión. Consigues que tu programa python trabaje con la base de datos existente casi sin definir la información del esquema en tu programa.
Estoy usando esta característica con Oracle DB en producción; lo único que tengo que definir son las relaciones entre las tablas que establecen explícitamente las claves externas y las principales.
Gracias por su respuesta. Pero como puedo entender, no es posible obtener una lista de todos los esquemas de la base de datos sin ser el administrador de la base de datos. – user1711699
Generalmente no hay necesidad de ser administrador para obtener permisos para listar tablas y esquemas en Oracle. Depende de qué permisos tenga la cuenta de usuario, pero normalmente existen tales permisos. Intente ejecutar esta consulta: SELECT PROPIETARIO, count (*) table_count FROM ALL_OBJECTS WHERE OBJECT_TYPE = 'TABLE' GROUP BY PROPIETARIO; – vvladymyrov
Gracias de nuevo. ¿Cómo puedo hacer esto en SQLAlchemy? ¿Cómo puedo consultar toda la base de datos? ¿Cuál es el equivalente de 'all_objects' en sqlalchemy? – user1711699
- 1. Esquema de estrella en SQLAlchemy
- 2. Esquema de ingeniería inversa (Oracle) a ERD
- 3. Esquema predeterminado en Oracle URL de conexión
- 4. ¿Cómo administrar eficientemente los cambios de esquema frecuentes usando sqlalchemy?
- 5. Cómo activar el esquema hr en Oracle 11g
- 6. Esquema de base de datos de muestra para Oracle
- 7. Esquema XML para Oracle SQL Developer Data Modeler
- 8. Oracle: desambiguación entre la tabla y el nombre del esquema
- 9. Oracle ¿el mismo nombre de tabla en un esquema diferente?
- 10. ¿Debo utilizar SQLObject, SQLAlchemy o SQLAlchemy + Elixir?
- 11. SQLAlchemy, borre el contenido de la base de datos, pero no descarte el esquema
- 12. Actualizar un esquema de base de datos sqlite con sqlalchemy y elixir
- 13. SQLAlchemy Herencia
- 14. Soporte de SQLAlchemy de Postgres Schemas
- 15. ¿Vale la pena usar sqlalchemy-migrate?
- 16. ¿Cómo verifico qué esquema se ha otorgado el permiso EXECUTE en un objeto Oracle?
- 17. ¿Cómo enumero todas las tablas en un esquema en Oracle SQL?
- 18. configuración de Oracle por esquema predeterminado del usuario (sin alterar una sesión)
- 19. La validación del esquema Hibernate falla en los sinónimos de la tabla Oracle
- 20. Configurar/desmontar el esquema de Oracle para construir CI sin fragmentar el catálogo
- 21. Eliminando un usuario conectado de un esquema de base de datos de Oracle 10g
- 22. Cómo SELECCIONAR en Oracle utilizando un DBLINK ubicado en un esquema diferente?
- 23. Obtener la última hora de DDL para la tabla de Oracle en esquema diferente
- 24. SqlAlchemy prev/next accesors?
- 25. SQLAlchemy 0.5.8 Función máxima
- 26. SQLAlchemy es intrincado?
- 27. django y sqlalchemy
- 28. Proxy de asociación SQLAlchemy
- 29. dump csv de sqlalchemy
- 30. SQLAlchemy ¿ORDEN AL DESCENDER?
O tal vez debería preguntar primero, ¿es posible hacer tal cosa? – user1711699