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

分享给朋友:
您可能感兴趣的文章:
随机阅读: