zoukankan      html  css  js  c++  java
  • 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 table
    class 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 os
    
    basedir = 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_app
    from .. import db
    from ..models import User
    from . 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表就创建完毕了, 虽然简单做起来还是遇到了一些小麻烦,多学习多学习。

  • 相关阅读:
    H
    饭卡(0 1背包)
    J
    H
    E
    3991: [SDOI2015]寻宝游戏
    CF 1051 F. The Shortest Statement
    CF 643 E. Bear and Destroying Subtrees
    4567: [Scoi2016]背单词
    4946: [Noi2017]蔬菜
  • 原文地址:https://www.cnblogs.com/shuangzikun/p/taotao_python_flask_db_commit.html
Copyright © 2011-2022 走看看