feat: add manager table orm

main
jackluson 2 years ago
parent e47da7bbff
commit e1eb7d25cb

@ -12,18 +12,29 @@ import sys
sys.path.append(os.getcwd() + '/src')
from sqlalchemy import create_engine, text
from sqlalchemy.orm import registry
from config.env import env_db_host, env_db_name, env_db_user, env_db_password, env_db_port
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://' + env_db_user + ':'+ env_db_password +'@'+ env_db_host + ':' + env_db_port + '/' + env_db_name
_global_engine = None
def get_engine():
def get_engine(**args):
global _global_engine
if _global_engine == None:
_global_engine = create_engine(SQLALCHEMY_DATABASE_URI, echo=True, future=True)
_global_engine = create_engine(SQLALCHEMY_DATABASE_URI, future=True, **args)
return _global_engine
_global_base = None
def get_orm_base():
global _global_base
mapper_registry = registry()
Base = mapper_registry.generate_base()
if _global_base == None:
_global_base = Base
return _global_base
if __name__ == '__main__':
engine1 = get_engine()
with engine1.connect() as conn:
@ -34,3 +45,4 @@ if __name__ == '__main__':
)
for row in result:
print("row", row)

@ -0,0 +1,13 @@
'''
Desc:
File: /__init__.py
Project: models
File Created: Saturday, 27th August 2022 12:24:17 pm
Author: luxuemin2108@gmail.com
-----
Copyright (c) 2022 Camel Lu
'''
print('--models init--');
import fund

@ -0,0 +1,24 @@
'''
Desc:
File: /fund.py
Project: models
File Created: Saturday, 27th August 2022 11:47:51 am
Author: luxuemin2108@gmail.com
-----
Copyright (c) 2022 Camel Lu
'''
import sys
sys.path.append('./src')
from sqlalchemy import Table
from models.var import prefix, ORM_Base, engine
fund_table_base = prefix + 'base'
fund_table = Table(fund_table_base, ORM_Base.metadata, autoload=True, autoload_with=engine)
class Fund(ORM_Base):
__table__ = fund_table
def __repr__(self):
return f"Fund Base(id={self.id!r}, name={self.fund_code!r}, manager_id={self.fund_name!r})"

@ -0,0 +1,49 @@
'''
Desc:
File: /manager.py
Project: models
File Created: Thursday, 25th August 2022 10:21:22 pm
Author: luxuemin2108@gmail.com
-----
Copyright (c) 2022 Camel Lu
'''
import sys
sys.path.append('./src')
from sqlalchemy.orm import Session, registry, relationship, aliased
from sqlalchemy import DATE, MetaData, Table, Column, Integer, BigInteger, String, ForeignKey, select
from db.engine import get_engine
from models.var import prefix, ORM_Base, engine
manager_table_name = prefix + 'manager'
manager_table = Table(manager_table_name, ORM_Base.metadata, autoload=True, autoload_with=engine)
class Manager(ORM_Base):
__table__ = manager_table
# managerAssoc = relationship("ManagerAssoc", back_populates="manager")
def __repr__(self):
return f"Manager(id={self.id!r}, name={self.name!r}, manager_id={self.manager_id!r})"
class ManagerAssoc(ORM_Base):
__tablename__ = prefix + 'manager_assoc'
manager_key = manager_table_name + '.manager_id'
id = Column(BigInteger, primary_key=True)
quarter_index = Column(String(12))
manager_id = Column(String(32), ForeignKey(manager_key))
fund_code_key = prefix + 'base' + '.fund_code'
fund_code= Column(String(10), ForeignKey(fund_code_key))
# manager = relationship('Manager', backref='manager_assoc')
# fund_base = relationship("Fund", backref="manager_assoc")
def __repr__(self):
return f"ManagerAssoc(id={self.id!r}, name={self.manager_id!r}, fullname={self.fund_code_id!r})"
def create():
ORM_Base.metadata.create_all(engine)
# mapper_registry.metadata.create_all(engine)
# ManagerAssoc.__table__.drop(engine)
if __name__ == '__main__':
create()
# demo()

@ -0,0 +1,16 @@
'''
Desc: 变量配置
File: /config.py
Project: models
File Created: Saturday, 27th August 2022 12:20:04 pm
Author: luxuemin2108@gmail.com
-----
Copyright (c) 2022 Camel Lu
'''
from db.engine import get_engine, get_orm_base
ORM_Base = get_orm_base()
prefix = 'fund_morning_'
engine = get_engine(echo=True)
Loading…
Cancel
Save