python - SQLAlchemy ORM पंडों के लिए रूपांतरण DataFrame
pandas flask-sqlalchemy (4)
चयनित समाधान मेरे काम नहीं आया, क्योंकि मैं त्रुटि प्राप्त करता रहा
गुण: 'एनोटेटसाइलेट' ऑब्जेक्ट में कोई विशेषता नहीं है 'निचला'
मैंने पाया कि निम्नलिखित काम किया है:
df = pd.read_sql_query(query.statement, engine)
इस विषय को कुछ समय में, यहाँ या कहीं और संबोधित नहीं किया गया है।
वहाँ एक समाधान एक SQLAlchemy
<Query object>
एक पांडा DataFrame में परिवर्तित कर रहा है?
पंडों में
pandas.read_sql
का उपयोग करने की क्षमता है लेकिन इसके लिए कच्चे SQL के उपयोग की आवश्यकता होती है।
मेरे पास इससे बचने के लिए दो कारण हैं: 1) मेरे पास पहले से ही
.db.session.query(Item).filter(Item.symbol.in_(add_symbols)
(स्वयं का एक अच्छा कारण) और 2) का उपयोग करके सब कुछ है, मैं क्वेरी के भाग के रूप में अजगर सूचियों का उपयोग कर रहा हूं (जैसे:
.db.session.query(Item).filter(Item.symbol.in_(add_symbols)
जहां
Item
मेरा मॉडल वर्ग है और
add_symbols
एक सूची है)। यह SQL
SELECT ... from ... WHERE ... IN
के बराबर है।
क्या कुछ संभव है?
नीचे ज्यादातर मामलों में काम करना चाहिए:
df = pd.read_sql(query.statement, query.session.bind)
मापदंडों पर अधिक जानकारी के लिए
pandas.read_sql
प्रलेखन देखें।
यदि आप मापदंडों और बोली विशिष्ट तर्कों के साथ एक क्वेरी संकलित करना चाहते हैं, तो इस तरह से कुछ का उपयोग करें:
c = query.statement.compile(query.session.bind)
df = pandas.read_sql(c.string, query.session.bind, params=c.params)
from sqlalchemy import Column, Integer, String, create_engine from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker engine = create_engine('postgresql://postgres:[email protected]:5432/DB', echo=False) Base = declarative_base(bind=engine) Session = sessionmaker(bind=engine) session = Session() conn = session.bind class DailyTrendsTable(Base): __tablename__ = 'trends' __table_args__ = ({"schema": 'mf_analysis'}) company_code = Column(DOUBLE_PRECISION, primary_key=True) rt_bullish_trending = Column(Integer) rt_bearish_trending = Column(Integer) rt_bullish_non_trending = Column(Integer) rt_bearish_non_trending = Column(Integer) gen_date = Column(Date, primary_key=True) df_query = select([DailyTrendsTable]) df_data = pd.read_sql(rt_daily_query, con = conn)