Oracleデータベースからデータを抽出する必要があります。 データベースに定義されているスキーマはどのようにして調べることができますか? Metadata()の説明にスキーマを定義していないときは、テーブルが見つかりません。 ご協力ありがとうございます。sqlalchemy Oracleスキーム
答えて
デフォルトのOracleスキーマは、Oracle接続で使用されたユーザー名と一致します。 テーブルが表示されない場合は、テーブルが別のスキーマに作成されていることを意味します。
あなたがここに二つの質問持っているように見える:
1)Oracleのスキーマについてを - SQLAlchemyの反射について)オラクル
に2のスキーマとテーブルを見つける方法 - Oracleスキーマを指定する方法をテーブルのため
最初の質問の回答は、多くの場所で見つけることができます。私。ここでは、https://stackoverflow.com/a/2247758/1296661
第2質問 テーブルクラスのコンストラクタは、デフォルトのユーザのスキーマと異なる場合、テーブルのスキーマを指定するスキーマ引数を持ちます。ここをクリックしてください http://docs.sqlalchemy.org/en/rel_0_7/core/schema.html#sqlalchemy.schema.Table
次は第2の質問に答えるためのPythonコードです。あなたは、あなたのケースに一致するように設定DB接続とテーブル名の値にする必要があります:sqlschemaと反射機能を使用して
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
幸運 - それは多くの楽しみです。あなたのプログラムにスキーマ情報をほとんど定義することなく、あなたのPythonプログラムを既存のデータベースで動作させることができます。
私は、本機能をoracle dbと一緒に使用しています。定義する必要があるのは、外部キーと主キーを明示的に設定するテーブル間の関係だけでした。
ありがとうございます。しかし、理解できるように、データベース管理者でなくても、データベースからすべてのスキーマのリストを取得することはできません。 – user1711699
通常、oracleのテーブルとスキーマをリストする権限を取得するには、管理者の必要はありません。ユーザーアカウントにはどのような権限があるかによって異なりますが、通常はそのような権限があります。次のクエリを実行してみてください。 SELECT OWNER、count(*)table_count FROM ALL_OBJECTS WHERE OBJECT_TYPE = 'TABLE' GROUP BY OWNER; – vvladymyrov
もう一度ありがとうございます。 SQLAlchemyでこれをどうやって行うことができますか?データベース全体をどのようにクエリできますか? sqlalchemyの 'all_objects'に相当するものは何ですか? – user1711699
- 1. SqlAlchemy Oracle DataTime形式
- 2. oracle apexカスタム認可スキーム
- 3. SQLAlchemyの1.1.10 Oracle接続エラー
- 4. SQLAlchemyとOracle 12c接続の問題
- 5. リレーショナル・スキームに基づいてOracle Databaseを作成する方法
- 6. スキーム
- 7. スキーム
- 8. スキーム
- 9. スキーム
- 10. スキーム
- 11. スキーム
- 12. スキーム
- 13. スキーム
- 14. Python - sqlalchemy - Oracle接続がSIDへの接続に失敗する
- 15. ファイル://スキームをコンテンツに変換する//スキーム
- 16. sqlalchemyのドキュメント
- 17. スキームは
- 18. スキーム - リスト
- 19. は、スキーム
- 20. EVALスキーム
- 21. スキーム#ボイドエラー
- 22. カレッジワーク - スキーム
- 23. スキーム:リスト
- 24. スキーム:リスト
- 25. スキームexcersize
- 26. sqlalchemy engine.connect()stormed
- 27. スキームの継続
- 28. タイムイベントのURIスキーム
- 29. Drracketスキームのシンプルプログラム
- 30. スキームを続行
おそらく私は最初に尋ねるべきです、そういうことをすることは可能でしょうか? – user1711699