1

たぶん、私の前の質問は長すぎて答えられませんでした。申し訳ありません...私は前の質問を短くしてより具体的にしようとします

API クエリ (出力として json 形式) から次の情報を抽出できます。

遺伝子1

Experiment1     
Experiment2     
Experiment3     
Experiment4     

GENE2

Experiment5     
Experiment2     
Experiment3     
Experiment8     
Experiment9     

[...]

そこで、遺伝子と、それらが研究された関連実験を取得します...

SQL Alchemy に次のスキーマがあります。

from sqlalchemy import create_engine, Column, Integer, String, Date, ForeignKey, Table, Float
from sqlalchemy.orm import sessionmaker, relationship, backref
from sqlalchemy.ext.declarative import declarative_base
import requests

Base = declarative_base()

Genes2experiments = Table('genes2experiments',Base.metadata,                                                                                                                                                                                                     
  Column('gene_id', String, ForeignKey('genes.id')),                                                                                                                                                                                                       
  Column('experiment_id', String, ForeignKey('experiments.id'))
)

class Genes(Base):
    __tablename__ = 'genes'
    id = Column(String(45), primary_key=True)
    experiments = relationship("Experiments", secondary=Genes2experiments, backref="genes")
    def __init__(self, id=""):
        self.id= id
    def __repr__(self):
        return "<genes(id:'%s')>" % (self.id)

class Experiments(Base):
    __tablename__ = 'experiments'
    id = Column(String(45), primary_key=True)
    def __init__(self, id=""):
        self.id= id
    def __repr__(self):
        return "<experiments(id:'%s')>" % (self.id)

def setUp():
    global Session
    engine=create_engine('mysql://root:password@localhost/db_name?charset=utf8', pool_recycle=3600,echo=False)
    Session=sessionmaker(bind=engine)

def add_data():   
    session=Session()
    for i in range(0,1000,200):
        request= requests.get('http://www.ebi.ac.uk/gxa/api/v1',params={"updownInOrganism_part":"brain","rows":200,"start":i})
        result = request.json
        for item in result['results']:
            gene_to_add = item['gene']['ensemblGeneId']            
    session.commit()
    session.close()       


setUp()
add_data()

このコードでは、API クエリから Genes テーブルまでのすべての遺伝子をデータベースに追加するだけです...

1 番目の質問: 実験情報をいつ、どのように追加して関係を維持する必要がありますか?

2 番目の質問: Genes クラスのように、Experiments クラスに新しいセカンダリ リレーションシップを追加する必要がありますか、それとも 1 つだけで十分ですか?

ありがとうございました

(詳細なコンテキスト/情報については、私の以前の質問

4

1 に答える 1