192 lines
9.3 KiB
Python
192 lines
9.3 KiB
Python
from app import create_app, db
|
||
from app.models import Section, Topic, Subtopic, Keyword
|
||
|
||
|
||
def init_db():
|
||
app = create_app()
|
||
with app.app_context():
|
||
# 清空所有表
|
||
db.drop_all()
|
||
db.create_all()
|
||
|
||
# 先創建所有關鍵字
|
||
keywords_data = {
|
||
# 基本概念相關
|
||
'區塊': '區塊鏈中的基本數據單元,包含多筆交易記錄和元數據信息',
|
||
'哈希值': '通過加密算法生成的固定長度字符串,用於確保數據完整性',
|
||
'時間戳': '記錄區塊生成時間的數據,用於確保交易順序',
|
||
'分散式帳本': '一種沒有中心控制的數據存儲方式,所有參與節點都持有數據副本',
|
||
'節點': '區塊鏈網絡中的參與者,負責存儲和驗證數據',
|
||
'去中心化': '系統不依賴單一中心機構控制,而是由所有參與者共同維護',
|
||
'共識機制': '確保分散式網絡中所有節點就數據有效性達成一致的算法',
|
||
'PoW': '工作量證明,通過解決複雜數學問題來獲取記賬權的共識機制',
|
||
'PoS': '權益證明,根據持有代幣數量和時間來分配記賬權的共識機制',
|
||
|
||
# 技術原理相關
|
||
'不可篡改性': '區塊鏈上的數據一旦被確認就無法被輕易修改的特性',
|
||
'密碼學': '用於確保數據安全性的數學理論和技術',
|
||
'非對稱加密': '使用一對密鑰(公鑰和私鑰)進行加密和解密的技術',
|
||
'智能合約': '在區塊鏈上自動執行的程式化合約',
|
||
'分散式存儲': '數據分散存儲在網絡中的多個節點上',
|
||
|
||
# 應用相關
|
||
'比特幣': '第一個也是最知名的加密貨幣',
|
||
'以太坊': '支持智能合約的區塊鏈平台',
|
||
'NFT': '非同質化代幣,代表獨特的數位資產',
|
||
'數位藝術': '使用數位技術創作的藝術作品',
|
||
'供應鏈': '產品從供應商到最終用戶的完整流程',
|
||
'追蹤溯源': '追踪和驗證產品來源及流轉過程',
|
||
|
||
# 挑戰相關
|
||
'擴展性': '區塊鏈系統處理大量交易的能力',
|
||
'能源消耗': '區塊鏈運作所需的計算資源和能源',
|
||
'監管合規': '符合各國法律法規的要求',
|
||
'隱私保護': '在透明性和隱私之間取得平衡',
|
||
'互操作性': '不同區塊鏈系統之間的互相操作能力'
|
||
}
|
||
|
||
keywords = {}
|
||
for term, description in keywords_data.items():
|
||
keyword = Keyword(term=term, description=description)
|
||
db.session.add(keyword)
|
||
keywords[term] = keyword
|
||
|
||
# 創建主要區塊內容
|
||
sections_data = [
|
||
{
|
||
'title': '基本概念',
|
||
'order_num': 1,
|
||
'topics': [
|
||
{
|
||
'title': '什麼是區塊鏈?',
|
||
'description': '區塊鏈是一種分散式帳本技術,通過密碼學和共識機制確保數據的安全性和不可篡改性。',
|
||
'subtopics': [
|
||
{
|
||
'title': '區塊與鏈結構',
|
||
'content': '區塊鏈由一系列按時間順序鏈接的區塊組成,每個區塊包含多筆交易記錄。通過哈希值將區塊連接成鏈,確保數據完整性。',
|
||
'keywords': ['區塊', '哈希值', '時間戳']
|
||
},
|
||
{
|
||
'title': '分散式帳本',
|
||
'content': '分散式帳本是一種沒有中心控制的數據存儲方式,網絡中的所有參與節點都持有完整的數據副本。這種設計提供了高可用性和抗故障能力。',
|
||
'keywords': ['分散式帳本', '節點', '去中心化']
|
||
},
|
||
{
|
||
'title': '共識機制',
|
||
'content': '共識機制是確保分散式網絡中所有節點就數據有效性達成一致的算法。不同的共識機制如工作量證明(PoW)、權益證明(PoS)等各有特點。',
|
||
'keywords': ['共識機制', 'PoW', 'PoS']
|
||
}
|
||
]
|
||
}
|
||
]
|
||
},
|
||
{
|
||
'title': '技術原理',
|
||
'order_num': 2,
|
||
'topics': [
|
||
{
|
||
'title': '區塊鏈如何運作?',
|
||
'description': '區塊鏈通過多個技術特性實現其核心功能。',
|
||
'subtopics': [
|
||
{
|
||
'title': '安全性機制',
|
||
'content': '區塊鏈使用密碼學技術確保數據安全,包括非對稱加密、數字簽名等技術。',
|
||
'keywords': ['密碼學', '非對稱加密', '不可篡改性']
|
||
},
|
||
{
|
||
'title': '智能合約',
|
||
'content': '智能合約是部署在區塊鏈上的自動執行程式,可以自動執行預設的規則和邏輯。',
|
||
'keywords': ['智能合約', '分散式存儲']
|
||
}
|
||
]
|
||
}
|
||
]
|
||
},
|
||
{
|
||
'title': '日常應用',
|
||
'order_num': 3,
|
||
'topics': [
|
||
{
|
||
'title': '區塊鏈應用場景',
|
||
'description': '區塊鏈技術在多個領域都有實際應用。',
|
||
'subtopics': [
|
||
{
|
||
'title': '加密貨幣',
|
||
'content': '最廣為人知的區塊鏈應用,包括比特幣、以太坊等。',
|
||
'keywords': ['比特幣', '以太坊']
|
||
},
|
||
{
|
||
'title': 'NFT與數位藝術',
|
||
'content': '使用區塊鏈技術確保數位資產的唯一性和所有權。',
|
||
'keywords': ['NFT', '數位藝術']
|
||
},
|
||
{
|
||
'title': '供應鏈追蹤',
|
||
'content': '利用區塊鏈的透明性和不可篡改性追蹤商品流向。',
|
||
'keywords': ['供應鏈', '追蹤溯源']
|
||
}
|
||
]
|
||
}
|
||
]
|
||
},
|
||
{
|
||
'title': '潛力與挑戰',
|
||
'order_num': 4,
|
||
'topics': [
|
||
{
|
||
'title': '區塊鏈的發展前景',
|
||
'description': '區塊鏈技術具有巨大潛力,同時也面臨諸多挑戰。',
|
||
'subtopics': [
|
||
{
|
||
'title': '技術挑戰',
|
||
'content': '區塊鏈技術在擴展性、能源消耗等方面面臨挑戰。',
|
||
'keywords': ['擴展性', '能源消耗']
|
||
},
|
||
{
|
||
'title': '監管與隱私',
|
||
'content': '區塊鏈技術在監管合規和隱私保護方面需要進一步發展。',
|
||
'keywords': ['監管合規', '隱私保護']
|
||
},
|
||
{
|
||
'title': '未來發展',
|
||
'content': '區塊鏈技術需要解決互操作性等問題以實現更廣泛的應用。',
|
||
'keywords': ['互操作性', '擴展性']
|
||
}
|
||
]
|
||
}
|
||
]
|
||
}
|
||
]
|
||
|
||
# 插入數據
|
||
for section_data in sections_data:
|
||
section = Section(title=section_data['title'], order_num=section_data['order_num'])
|
||
db.session.add(section)
|
||
db.session.flush()
|
||
|
||
for topic_data in section_data['topics']:
|
||
topic = Topic(
|
||
section_id=section.id,
|
||
title=topic_data['title'],
|
||
description=topic_data['description']
|
||
)
|
||
db.session.add(topic)
|
||
db.session.flush()
|
||
|
||
for subtopic_data in topic_data['subtopics']:
|
||
subtopic = Subtopic(
|
||
topic_id=topic.id,
|
||
title=subtopic_data['title'],
|
||
content=subtopic_data['content']
|
||
)
|
||
for keyword_term in subtopic_data['keywords']:
|
||
subtopic.keywords.append(keywords[keyword_term])
|
||
|
||
db.session.add(subtopic)
|
||
|
||
db.session.commit()
|
||
|
||
|
||
if __name__ == '__main__':
|
||
init_db()
|