1

SQLite 以外のデータベースの経験があまりないため、用語のタイプミスをお許しください。データベースを2番目のデータベースにアタッチし、すべてのテーブルでクエリを実行できるSQLiteで行うことを複製しようとしています。SQLite で SQLAlchemy を使用していませんでした

Win7/54 で SQLAlchemy 1.0.13、Postgres 9.5、Python 3.5.2 (Anaconda を使用) を使用しています。postgres_fdw を使用して 2 つのデータベース (localhost 上) を接続し、セカンダリ データベースからいくつかのテーブルをインポートしました。PgAdminIII で SQL を使用し、psycopg2 を使用して Python から、接続されたテーブルを手動で正常にクエリできます。私が試したSQLAlchemyで:

# Same connection string info that psycopg2 used
engine = create_engine(conn_str, echo=True)

class TestTable(Base):
    __table__ = Table('test_table', Base.metadata,
                      autoload=True, autoload_with=engine)

    # Added this when I got the error the first time
    # test_id is a primary key in the secondary table
    Column('test_id', Integer, primary_key=True)

そしてエラーを取得します:

sqlalchemy.exc.ArgumentError: Mapper Mapper|TestTable|test_table could not
assemble any primary key columns for mapped table 'test_table'

それから私は試しました:

insp = reflection.Inspector.from_engine(engine)
print(insp.get_table_names())

アタッチされたテーブルは表示されません (プライマリ データベースのテーブルは表示されます)。私が達成しようとしていることを行う方法はありますか?

4

1 に答える 1