2017-02-21 15 views
-2

は、私は2つのテーブルを持っている:外部キーで特定の行を選択する方法は?

class symbol(models.Model): 
    ticker = models.CharField(max_length=40) 
    instrument = models.CharField(max_length=64, default='stock') 
    name = models.CharField(max_length=200) 
    sector = models.CharField(max_length=200, default=None) 
    currency = models.CharField(max_length=64, default='USD') 
    created_date = models.DateTimeField(auto_now=True) 
    last_updated_date = models.DateTimeField(auto_now=True) 

class daily_price(models.Model): 
    symbol = models.ForeignKey(symbol) 
    price_date = models.DateTimeField() 
    created_date = models.DateTimeField() 
    last_updated_date = models.DateTimeField() 
    open_price = models.DecimalField(max_digits=19, decimal_places=4) 
    high_price = models.DecimalField(max_digits=19, decimal_places=4) 
    low_price = models.DecimalField(max_digits=19, decimal_places=4) 
    close_price = models.DecimalField(max_digits=19, decimal_places=4) 
    adj_close_price = models.DecimalField(max_digits=19, decimal_places=4) 
    volume = models.BigIntegerField() 

は、私は、テーブルのstrategyceleryapp_daily_priceの行を選択します。ジャンゴで

Iは symbol's ticker(外部キー)によって特定の行を選択するread_sql_queryを使用する

con = sqlite3.connect("/home/leo/github/StrategyCeleryWebsite/db.sqlite3") 
df = pd.read_sql_query("SELECT * from strategyceleryapp_daily_price", con) 

# verify that result of SQL query is stored in the dataframe 
print(df.head()) 

con.close() 

、Iはdaily_price.objects.get(symbol__ticker='AAPL')を使用することができます。

しかし、私はSQLコマンドからコマンドを書く方法を知らない。

このコマンドを書くにはどうすればよいですか?

ありがとうございました。

+1

なぜあなたをあなたがして作成Djangoのクエリを確認することができます

SELECT dp.* from strategyceleryapp_daily_price dp INNER JOIN strategyceleryapp_symbol s on dp.symbod_id=s.id where s.ticker='AAPL' 

'sqlite3.connect'を使用しますか? Djangoが** _ ORM(オブジェクト・リレーショナル・マッピング)_ **をベースにしていることを知っていましたか? –

+0

はい、私はORMを知っています。しかし、このコードは純粋なpythonで動作します。ありがとう。 – yensheng

+0

これについて:https://docs.python.org/2/library/sqlite3.html –

答えて

0

はSQLで、あなたがテーブルを結合し、値をチェック:その後、

python manage.py dbshell 

と::

print(daily_price.objects.get(symbol__ticker='AAPL').query) 
+0

'AttributeError: 'daily_price'オブジェクトには 'query''属性がありません。' .query'は '.get()'ではなく 'queryset'でのみ利用可能です。例 'daily_price.objects.filter(symbol__ticker = 'AAPL')。query .__ str __()' –

関連する問題