NFT项目开发日志(1)——数据库设计
一丶环境配置:python-flask
二丶数据库设计
三丶实现
1.在蓝本(blueprint)下面创建scyner模板
2.创建scyner模板后会在其下自动生成一个__init__.py文件(空文件)
3.在scyner模板下创建一个models.py文件(数据操作)
(1)数据表
- chain
- block
- transaction
- contract
- contract_templat
- event
(2)表之间的关系
- chain 1:n block
- block 1:n transaction
- contract 1:n transaction
- contract_templat 1:n contract
- transaction 1:n event
(1)封装式建表
A.导入模板
from 文件名.database import (
Column,
Model,
SurrogatePK,
db,
reference_col,
relationship,
)
B.建表
class Chain(SurrogatePK, Model):
__tablename__ = "chain"
name = Column(db.String(88), nullable=False)
config = Column(db.JSON, default={}, nullable=False)
height = Column(db.Integer(), nullable=False)
inserted_at = Column(db.DateTime, nullable=False, default=dt.datetime.utcnow)
updated_at = Column(db.DateTime, nullable=False, default=dt.datetime.utcnow)
(2)直接建表(db.Model)
class Chain(db.Model):
__tablename__ = "chain"
id = db.Column(db.Integer(), nullable=False, primary_key=True)
name = db.Column(db.String(88), nullable=False)
config = db.Column(db.JSON, default={}, nullable=False)
height = db.Column(db.Integer(), nullable=False)
inserted_at = Column(db.DateTime, nullable=False, default=dt.datetime.utcnow)
updated_at = Column(db.DateTime, nullable=False, default=dt.datetime.utcnow)
4.在scyner模板下创建一个scyner.py文件(其他操作)
(1)导入相关模板
(2)创建蓝本
syncer_bp = Blueprint("syncer", __name__, url_prefix="/syncer", static_folder="../static")
(3)编写路由
5.修改蓝本同级目录下的__ini__.py文件
(1)导入模板
from 文件名.blueprints.syncer.syncer import syncer_bp
(2)注册蓝本(找到def register_blueprints(app)方法)
app.register_blueprint(syncer_bp, url_prefix='/syncer')