flask-日料網站搭建-資料庫操作,flask-
引言:想使用python的flask架構搭建一個日料網站,主要包含web架構,靜態頁面,後台系統,互動,目前已經copy完首頁,不是前端太慢太慢。
本節知識:資料庫的操作,模型建表,更新資料庫。
python環境:python2.7,flask,以及flask相關的庫(沒有列完,如果運行manage.py時提示未安裝的庫安裝就ok了。)
上節已經把目錄搭建好了,目錄如下。
今天主要涉及到幾個檔案,config.py app/modles.py app/main/views.py以及migrations這個檔案夾
先把要建的資料庫和表先排出來,以及連結本機資料庫的使用者名稱和密碼:
user:root
password:root
port:localhost:3300
db:f_liaoli
table: admin表
-------------------------------------這是分割線-------------------
---先上模型的代碼app/modles.py
# -*- coding: utf-8 -*-from app import db###admin tableclass User(db.Model): __tablename__ = 'admin' id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(64), unique=True, index=True) password = db.Column(db.String(128)) def __init__(self, UserCode=None, Password=None): self.username = username self.password = password def __repr__(self): return '<User %r>' % self.userName
3個欄位比較簡單,用來測試嘛,足夠了。
---再看config.py
# -*- coding: utf-8 -*-import osbasedir = os.path.abspath(os.path.dirname(__file__))# 基類class Config: SECRET_KEY = 'hard to guess string' SQLALCHEMY_COMMIT_ON_TEARDOWN = True FLASKY_MAIL_SUBJECT_PREFIX = '[Flask]' FLASKY_MAIL_SENDER = 'Flask Admin' FLASKY_ADMIN = 'dimples' @staticmethod def init_app(app): pass# 開發環境class DevelopmentConfig(Config): DEBUG = True SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:root@localhost:3306/f_liaoli?charset=utf8' SQLALCHEMY_TRACK_MODIFICATIONS = False# 測試環境class TestingConfig(Config): TESTING = True SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(basedir, 'data-test.sqlite')# 生產環境class ProductionConfig(Config): SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(basedir, 'data.sqlite')# 設定一個config 字典中,註冊了不同的配置環境config = { 'development': DevelopmentConfig, 'testing': TestingConfig, 'production': ProductionConfig, 'default': DevelopmentConfig }
主要看開發環境那個class,這是連結資料庫的語句,居然要和pymysql一起用,mmp我用mysql試了半天,很尷尬。
------app/main/views
# -*- coding: utf-8 -*-from flask import render_template, session, redirect, url_for, current_appfrom .. import dbfrom ..models import Userfrom . import main@main.route('/', methods=['GET', 'POST'])def index(): return render_template('index.html')@main.route('/admin/login', methods=['GET', 'POST'])def Alogin(): return render_template('admin/login.html')@main.route('/admin/', methods=['GET'])def Aindex(): return render_template('admin/index.html')
##from ..models import * 這個需要寫上,否則也建立不了。
---------------這是分割線-----------------
準備工作完畢之後開始測試了
進入manage.py目錄 執行python manage.py db init
提示migrations檔案夾已經存在,拿我們去吧這個刪除了。
刪一下再執行。
運行之後,本地也建立了該檔案夾。
--執行python manage.py db migrate -m "inition migrate"
---執行python manage.py db upgrade
到此admin表就建立完畢了, 雖然簡單做起來還是遇到了一些小麻煩,多學習多學習。