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. Python - sqlalchemy - Oracle接続がSIDへの接続に失敗する
- 2. スキーム
- 3. スキーム
- 4. スキーム
- 5. スキーム
- 6. sqlalchemyのドキュメント
- 7. ファイル://スキームをコンテンツに変換する//スキーム
- 8. EVALスキーム
- 9. は、スキーム
- 10. スキーム:リスト
- 11. スキーム#ボイドエラー
- 12. スキーム:リスト
- 13. スキームは
- 14. スキームを続行
- 15. スキーム/ラケット:ブール
- 16. 例えばスキーム
- 17. ShamirのスキームC#
- 18. 表示 - スキーム
- 19. eq?スキームでは?
- 20. スキームの継続
- 21. コピー保護スキーム
- 22. スキームのパターンマッチング
- 23. Rhomobile:カスタムURLスキーム
- 24. アソシエーションプロキシSQLAlchemy
- 25. sqlalchemyラベル
- 26. pythonのsqlalchemyのパフォーマンスですか?
- 27. SQLAlchemyの+のcx_oracleと特殊文字
- 28. スキームinfinteループとメモリ
- 29. スキームのプログラミング言語
- 30. delete-double関数(スキーム)
おそらく私は最初に尋ねるべきです、そういうことをすることは可能でしょうか? – user1711699