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) 





flask-sqlalchemy