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表就创建完毕了, 虽然简单做起来还是遇到了一些小麻烦,多学习多学习。

  • 相关阅读:
    ArcGIS Pro二次开发-在地图上插入一个点
    ArcGIS Pro二次开发-获得所有图层
    ArcGIS Pro二次开发-识别工具
    ArcGIS Pro二次开发-放大缩小工具
    ArcGIS Pro二次开发-选择工具
    ArcGIS Pro二次开发计算一个面层的总面积
    arcgis pro二次开发官方文档
    已禁用对分布式事务管理器(MSDTC)的网络访问。请使用组件服务管理工具启用 DTC 以便在 MSDTC 安全配置中进行网络访问。
    Windows把内存变成快速虚拟硬盘
    Ramdisk虚拟内存盘,Swap分区
  • 原文地址:https://www.cnblogs.com/shuangzikun/p/taotao_python_flask_db_commit.html
Copyright © 2011-2022 走看看