pythonOrm企业级应用

1.创建表


BEGIN
  EXECUTE IMMEDIATE 'DROP TABLE valuation CASCADE CONSTRAINT';
EXCEPTION
  WHEN OTHERS THEN NULL;
END;
/
create table valuation(
code                 VARCHAR2(30)         NOT NULL                               ,--股票代码                         
day                   VARCHAR2(10)         NOT NULL                  ,--日期
capitalization          NUMBER(19,4)         default 0 NOT NULL                ,--总股本(万股)
circulating_cap         NUMBER(19,4)         default 0 NOT NULL               ,--流通股本(万股)
market_cap               NUMBER(19,4)        default 0 NOT NULL               ,--总市值(亿元)
circulating_market_cap     NUMBER(19,4)      default 0 NOT NULL               ,--流通市值(亿元)
turnover_ratio             NUMBER(19,4)      default 0 NOT NULL               ,--换手率(%)
pe_ratio                   NUMBER(19,4)      default 0 NOT NULL               ,--市盈率(PE, TTM)
pe_ratio_lyr                NUMBER(19,4)     default 0 NOT NULL               ,--市盈率(PE)
pb_ratio                      NUMBER(19,4)   default 0 NOT NULL               ,--市净率(PB)
ps_ratio                      NUMBER(19,4)   default 0 NOT NULL               ,--市销率(PS, TTM)
pcf_ratio                    NUMBER(19,4)    default 0 NOT NULL               ,--市现率(PCF, 现金净流量TTM)
  CONSTRAINT pk_valuation PRIMARY KEY(code)
)TABLESPACE ts_sqp2018today

/


BEGIN
  EXECUTE IMMEDIATE 'DROP TABLE indicator CASCADE CONSTRAINT';
EXCEPTION
  WHEN OTHERS THEN NULL;
END;
/
create table indicator(
f1            varchar2(30)  default ''   NOT NULL          ,--股票代码
f2            varchar2(10)  default ''   NOT NULL          ,--日期
f3            varchar2(10)  default ''   NOT NULL           ,--日期
f4            number(19,4)  default 0      NOT NULL            ,--每股收益EPS(元)
f5            number(19,4)  default 0      NOT NULL            ,--扣除非经常损益后的净利润(元)
f6            number(19,4)  default 0      NOT NULL            ,--经营活动净收益(元)
f7            number(19,4)  default 0      NOT NULL            ,--价值变动净收益(元)
f8            number(19,4)  default 0      NOT NULL            ,--净资产收益率ROE(%)
f9            number(19,4)  default 0      NOT NULL            ,--净资产收益率(扣除非经常损益)(%)
f10           number(19,4)  default 0      NOT NULL            ,--总资产净利率ROA(%)
f11           number(19,4)  default 0      NOT NULL            ,--销售净利率(%)
f12           number(19,4)  default 0      NOT NULL            ,--销售毛利率(%)
f13           number(19,4)  default 0      NOT NULL            ,--营业总成本/营业总收入(%)
f14           number(19,4)  default 0      NOT NULL            ,--营业利润/营业总收入(%)
f15           number(19,4)  default 0      NOT NULL            ,--净利润/营业总收入(%)
f16           number(19,4)  default 0      NOT NULL            ,--营业费用/营业总收入(%)
f17           number(19,4)  default 0      NOT NULL            ,--管理费用/营业总收入(%)
f18           number(19,4)  default 0      NOT NULL            ,--财务费用/营业总收入(%)
f19           number(19,4)  default 0      NOT NULL            ,--经营活动净收益/利润总额(%)
f20           number(19,4)  default 0      NOT NULL            ,--价值变动净收益/利润总额(%)
f21           number(19,4)  default 0      NOT NULL            ,--扣除非经常损益后的净利润/净利润(%)
f22           number(19,4)  default 0      NOT NULL            ,--销售商品提供劳务收到的现金/营业收入(%)
f23           number(19,4)  default 0      NOT NULL            ,--经营活动产生的现金流量净额/营业收入(%)
f24           number(19,4)  default 0      NOT NULL            ,--经营活动产生的现金流量净额/经营活动净收益(%)
f25           number(19,4)  default 0      NOT NULL            ,--营业总收入同比增长率(%)
f26           number(19,4)  default 0      NOT NULL            ,--营业总收入环比增长率(%)
f27           number(19,4)  default 0      NOT NULL            ,--营业收入同比增长率(%)
f28           number(19,4)  default 0      NOT NULL            ,--营业收入环比增长率(%)
f29           number(19,4)  default 0      NOT NULL            ,--营业利润同比增长率(%)
f30           number(19,4)  default 0      NOT NULL            ,--营业利润环比增长率(%)
f31           number(19,4)  default 0      NOT NULL            ,--净利润同比增长率(%)
f32           number(19,4)  default 0      NOT NULL            ,--净利润环比增长率(%)
f33           number(19,4)  default 0      NOT NULL            ,--归属母公司股东的净利润同比增长率(%)
f34           number(19,4)  default 0      NOT NULL            ,--归属母公司股东的净利润环比增长率(%)
CONSTRAINT pk_indicator PRIMARY KEY(code)
)TABLESPACE ts_sqp2018today

/

2.写pyhon脚本

# -*- coding: utf-8 -*-

import sys
import cx_Oracle
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
from sqlalchemy import Column, Integer, String, Float
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.sql.expression import or_, and_

engine = create_engine('oracle://yugy:yugy@127.0.0.1:1521/yugy')
Session = sessionmaker(bind=engine)
session = Session()
query = None

class indicator(Base):
    __tablename__ = 'indicator'

    code = Column('f1',String(30), primary_key=True)
    pubDate  = Column('f2',String(10), primary_key=True)
    statDate  = Column('f3',String(10), primary_key=True)
    eps = Column('f4',Float)
    adjusted_profit = Column('f5',Float)
    operating_profit = Column('f6',Float)
    value_change_profit = Column('f7',Float)
    roe = Column('f8',Float)
    inc_return = Column('f9',Float)
    roa = Column('f10',Float)
    net_profit_margin = Column('f11',Float)
    gross_profit_margin = Column('f12',Float)
    expense_to_total_revenue = Column('f13',Float)
    operation_profit_to_total_revenue = Column('f14',Float)
    net_profit_to_total_revenue = Column('f15',Float)
    operating_expense_to_total_revenue = Column('f16',Float)
    ga_expense_to_total_revenue = Column('f17',Float)
    financing_expense_to_total_revenue = Column('f18',Float)
    operating_profit_to_profit = Column('f19',Float)
    invesment_profit_to_profit = Column('f20',Float)
    adjusted_profit_to_profit = Column('f21',Float)
    goods_sale_and_service_to_revenue = Column('f22',Float)
    ocf_to_revenue = Column('f23',Float)
    ocf_to_operating_profit = Column('f24',Float)
    inc_total_revenue_year_on_year = Column('f25',Float)
    inc_total_revenue_annual = Column('f26',Float)
    inc_revenue_year_on_year = Column('f27',Float)
    inc_revenue_annual = Column('f28',Float)
    inc_operation_profit_year_on_year = Column('f29',Float)
    inc_operation_profit_annual = Column('f30',Float)
    inc_net_profit_year_on_year = Column('f31',Float)
    inc_net_profit_annual = Column('f32',Float)
    inc_net_profit_to_shareholders_year_on_year = Column('f33',Float)
    inc_net_profit_to_shareholders_annual = Column('f34',Float)

    def __repr__(self):
        return "<Indicator(code='%s', " \
               "pubDate='%s', " \
               "statDate='%s'," \
               "eps = '%s'," \
               "adjusted_profit = '%s'," \
               "operating_profit = '%s'," \
               "value_change_profit = '%s'," \
               "roe = '%s''," \
               "inc_return = '%s'," \
               "roa = '%s'," \
               "net_profit_margin = '%s' ," \
               "gross_profit_margin = '%s'," \
               "expense_to_total_revenue = '%s'," \
               "operation_profit_to_total_revenue = '%s'," \
               "net_profit_to_total_revenue = '%s'," \
               "operating_expense_to_total_revenue = '%s'," \
               "ga_expense_to_total_revenue = '%s', " \
               "financing_expense_to_total_revenue = '%s', " \
               "operating_profit_to_profit = '%s', " \
               "invesment_profit_to_profit = '%s', " \
               "adjusted_profit_to_profit = '%s', " \
               "goods_sale_and_service_to_revenue = '%s', " \
               "ocf_to_revenue = '%s', " \
               "ocf_to_operating_profit = '%s', " \
               "inc_total_revenue_year_on_year = '%s', " \
               "inc_total_revenue_annual = '%s', " \
               "inc_revenue_year_on_year = '%s', " \
               "inc_revenue_annual = '%s', " \
               "inc_operation_profit_year_on_year = '%s', " \
               "inc_operation_profit_annual = '%s', " \
               "inc_net_profit_year_on_year = '%s', " \
               "inc_net_profit_annual = '%s', " \
               "inc_net_profit_to_shareholders_year_on_year = '%s', " \
               "inc_net_profit_to_shareholders_annual = '%s' )>" % (
            self.code, self.pubDate, self.statDate, self.eps,
            self.adjusted_profit, self.operating_profit, self.value_change_profit, self.roe,
            self.inc_return, self.roa, self.net_profit_margin, self.gross_profit_margin,
            self.expense_to_total_revenue, self.operation_profit_to_total_revenue, self.net_profit_to_total_revenue, self.operating_expense_to_total_revenue,
            self.ga_expense_to_total_revenue, self.financing_expense_to_total_revenue, self.operating_profit_to_profit, self.invesment_profit_to_profit,
            self.adjusted_profit_to_profit, self.goods_sale_and_service_to_revenue, self.ocf_to_revenue, self.ocf_to_operating_profit,
            self.inc_total_revenue_year_on_year, self.inc_total_revenue_annual, self.inc_revenue_year_on_year, self.inc_revenue_annual,
            self.inc_operation_profit_year_on_year, self.inc_operation_profit_annual, self.inc_net_profit_year_on_year, self.inc_net_profit_annual,
            self.inc_net_profit_to_shareholders_year_on_year, self.inc_net_profit_to_shareholders_annual)

#
class valuation(Base):
    __tablename__ = 'valuation'

    code = Column(String(30), primary_key=True)
    day = Column(String(10))
    capitalization= Column(Float)
    circulating_cap= Column(Float)
    market_cap= Column(Float)
    circulating_market_cap= Column(Float)
    turnover_ratio= Column(Float)
    pe_ratio= Column(Float)
    pe_ratio_lyr= Column(Float)
    pb_ratio= Column(Float)
    ps_ratio= Column(Float)
    pcf_ratio= Column(Float)

    def __repr__(self):
        return "<Valuation(code='%s', day='%s', capitalization='%s', circulating_cap = '%s'," \
               " market_cap = '%s', circulating_market_cap = '%s', turnover_ratio = '%s'," \
               "pe_ratio = '%s',pe_ratio_lyr = '%s',pb_ratio = '%s',ps_ratio = '%s',pcf_ratio = '%s' )>" % (
            self.code, self.day,self.capitalization, self.circulating_cap,
            self.market_cap, self.circulating_market_cap,self.turnover_ratio, self.pe_ratio,
            self.pe_ratio_lyr, self.pb_ratio,self.ps_ratio, self.pcf_ratio)

def mytest():
    for s in session.query(indicator):
         print(s)
    for s in session.query(valuation):
         print(s)
    print(financial_data_filter_dayu('000002.XSHE', valuation.pe_ratio, -1))

def financial_data_filter_dayu(security_list, field, v1 = 0):
    rs = []
    code = str(field).split('.')[0] + '.code'
    for s in session.query(code).filter(
                    and_(
                                field > v1,
                                valuation.code == '000001.XSHE')
                    ):
        rs.append(s)
    return rs

def query(*obj):
    query = session.query(*obj)
    return session.query(*obj)

mytest()
3.测试




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值