Skip to content
This repository was archived by the owner on Sep 6, 2025. It is now read-only.

Commit e1eb7d2

Browse files
committed
feat: add manager table orm
1 parent e47da7b commit e1eb7d2

File tree

5 files changed

+116
-2
lines changed

5 files changed

+116
-2
lines changed

src/db/engine.py

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,18 +12,29 @@
1212
sys.path.append(os.getcwd() + '/src')
1313

1414
from sqlalchemy import create_engine, text
15+
from sqlalchemy.orm import registry
1516
from config.env import env_db_host, env_db_name, env_db_user, env_db_password, env_db_port
1617

1718
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://' + env_db_user + ':'+ env_db_password +'@'+ env_db_host + ':' + env_db_port + '/' + env_db_name
1819

1920
_global_engine = None
2021

21-
def get_engine():
22+
def get_engine(**args):
2223
global _global_engine
2324
if _global_engine == None:
24-
_global_engine = create_engine(SQLALCHEMY_DATABASE_URI, echo=True, future=True)
25+
_global_engine = create_engine(SQLALCHEMY_DATABASE_URI, future=True, **args)
2526
return _global_engine
2627

28+
_global_base = None
29+
30+
def get_orm_base():
31+
global _global_base
32+
mapper_registry = registry()
33+
Base = mapper_registry.generate_base()
34+
if _global_base == None:
35+
_global_base = Base
36+
return _global_base
37+
2738
if __name__ == '__main__':
2839
engine1 = get_engine()
2940
with engine1.connect() as conn:
@@ -34,3 +45,4 @@ def get_engine():
3445
)
3546
for row in result:
3647
print("row", row)
48+

src/models/__init__.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
'''
2+
Desc:
3+
File: /__init__.py
4+
Project: models
5+
File Created: Saturday, 27th August 2022 12:24:17 pm
6+
7+
-----
8+
Copyright (c) 2022 Camel Lu
9+
'''
10+
11+
print('--models init--');
12+
13+
import fund

src/models/fund.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
'''
2+
Desc:
3+
File: /fund.py
4+
Project: models
5+
File Created: Saturday, 27th August 2022 11:47:51 am
6+
7+
-----
8+
Copyright (c) 2022 Camel Lu
9+
'''
10+
import sys
11+
sys.path.append('./src')
12+
13+
from sqlalchemy import Table
14+
from models.var import prefix, ORM_Base, engine
15+
16+
fund_table_base = prefix + 'base'
17+
18+
fund_table = Table(fund_table_base, ORM_Base.metadata, autoload=True, autoload_with=engine)
19+
20+
class Fund(ORM_Base):
21+
__table__ = fund_table
22+
23+
def __repr__(self):
24+
return f"Fund Base(id={self.id!r}, name={self.fund_code!r}, manager_id={self.fund_name!r})"

src/models/manager.py

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
'''
2+
Desc:
3+
File: /manager.py
4+
Project: models
5+
File Created: Thursday, 25th August 2022 10:21:22 pm
6+
7+
-----
8+
Copyright (c) 2022 Camel Lu
9+
'''
10+
import sys
11+
sys.path.append('./src')
12+
13+
from sqlalchemy.orm import Session, registry, relationship, aliased
14+
from sqlalchemy import DATE, MetaData, Table, Column, Integer, BigInteger, String, ForeignKey, select
15+
from db.engine import get_engine
16+
from models.var import prefix, ORM_Base, engine
17+
18+
manager_table_name = prefix + 'manager'
19+
manager_table = Table(manager_table_name, ORM_Base.metadata, autoload=True, autoload_with=engine)
20+
21+
class Manager(ORM_Base):
22+
__table__ = manager_table
23+
# managerAssoc = relationship("ManagerAssoc", back_populates="manager")
24+
def __repr__(self):
25+
return f"Manager(id={self.id!r}, name={self.name!r}, manager_id={self.manager_id!r})"
26+
27+
class ManagerAssoc(ORM_Base):
28+
__tablename__ = prefix + 'manager_assoc'
29+
manager_key = manager_table_name + '.manager_id'
30+
id = Column(BigInteger, primary_key=True)
31+
quarter_index = Column(String(12))
32+
manager_id = Column(String(32), ForeignKey(manager_key))
33+
fund_code_key = prefix + 'base' + '.fund_code'
34+
fund_code= Column(String(10), ForeignKey(fund_code_key))
35+
# manager = relationship('Manager', backref='manager_assoc')
36+
# fund_base = relationship("Fund", backref="manager_assoc")
37+
38+
def __repr__(self):
39+
return f"ManagerAssoc(id={self.id!r}, name={self.manager_id!r}, fullname={self.fund_code_id!r})"
40+
41+
def create():
42+
ORM_Base.metadata.create_all(engine)
43+
# mapper_registry.metadata.create_all(engine)
44+
# ManagerAssoc.__table__.drop(engine)
45+
46+
47+
if __name__ == '__main__':
48+
create()
49+
# demo()

src/models/var.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
'''
2+
Desc: 变量配置
3+
File: /config.py
4+
Project: models
5+
File Created: Saturday, 27th August 2022 12:20:04 pm
6+
7+
-----
8+
Copyright (c) 2022 Camel Lu
9+
'''
10+
from db.engine import get_engine, get_orm_base
11+
12+
ORM_Base = get_orm_base()
13+
14+
prefix = 'fund_morning_'
15+
16+
engine = get_engine(echo=True)

0 commit comments

Comments
 (0)