Flask-SQLAlchemy的使用
create database flask_mysql charset utf8
DIALECT = 'mysql'
DRIVER = 'mysqldb'
USERNAME = 'root'
PASSWORD = 'root'
HOST = '127.0.0.1'
PORT = '3306'
DATABASE = 'flask_sql'
SQLALCHEMY_DATABASE_URI = "{}+{}://{}:{}@{}:{}/{}?charset=utf8".format(DIALECT,DRIVER,USERNAME,PASSWORD,HOST,PORT,DATABASE)
SQLALCHEMY_TRACK_MODIFICATIONS = False
app = Flask(__name__)
app.config.from_object(config)
db = SQLAlchemy(app)
from flask import Flask
import config
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config.from_object(config)
db = SQLAlchemy(app)
class Article(db.Model):
__tablename__ = 'article'
id = db.Column(db.Integer,primary_key=True,autoincrement=True)
# nullable=False 不能为空
title = db.Column(db.String(32),nullable=False)
content = db.Column(db.Text,nullable=False)
6、测试数据库是否连接成功 注:程序运行没有报错表示正常的
db.create_all()
from flask import Flask
import config
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config.from_object(config)
db = SQLAlchemy(app)
class Article(db.Model):
__tablename__ = 'article'
id = db.Column(db.Integer,primary_key=True,autoincrement=True)
# nullable=False 不能为空
title = db.Column(db.String(32),nullable=False)
content = db.Column(db.Text,nullable=False)
class User(db.Model):
__tablename__ = 'users'
id = db.Column(db.Integer,primary_key=True,autoincrement=True)
name = db.Column(db.String,nullable=False)
# nullable=False 不能为空
title = db.Column(db.String(32),nullable=False)
content = db.Column(db.Text,nullable=False)
db.drop_all()
db.create_all()
@app.route('/')
def index():
return 'Hello World'
if __name__ == '__main__':
app.run(debug=True)
art = Article(title='aaa',content='bbb')
db.session.add(art)
db.session.commit()
art = Article.query.filter().first()
print(art.title)
print(art.content)
art.title = 'ccc'
db.session.commit()
db.session.delete(art)
db.session.commit()
flask-SQLAlchemy外键及其关系
Flask数据库迁移操作步骤
项目结构 1、app主文件配置
from flask import Flask,render_template,request
import config
app = Flask(__name__)
app.config.from_object(config)
@app.route('/')
def index():
return render_template('index.html')
if __name__ == '__main__':
app.run()
#encoding: utf-8
import os
DEBUG = True
SECRET_KEY = os.urandom(24)
HOSTNAME = '127.0.0.1'
PORT = '3306'
DATABASE = 'list'
USERNAME = 'root'
PASSWORD = 'root'
DB_URI = 'mysql+mysqldb://{}:{}@{}:{}/{}?charset=utf8'.format(USERNAME,PASSWORD,HOSTNAME,PORT,DATABASE)
SQLALCHEMY_DATABASE_URI = DB_URI
SQLALCHEMY_TRACK_MODIFICATIONS = False
# -*- coding: utf-8 -*-
# @Author : 张江峰
# @Time : 2018/10/16 11:47
# @E-Mail : jiangfengzh365@163.com
# @File : exts.py
# @Software: PyCharm
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
# -*- coding: utf-8 -*-
from flask_script import Manager
from flask_migrate import Migrate,MigrateCommand
from exts import db
from apps import app
from models import User
manage = Manager(app)
migrate = Migrate(app,db)
manage.add_command('db',MigrateCommand)
if __name__ == "__main__":
manage.run()
# -*- coding: utf-8 -*-
# @Author : 张江峰
# @Time : 2018/10/16 11:48
# @E-Mail : jiangfengzh365@163.com
# @File : models.py
# @Software: PyCharm
from exts import db
class User(db.Model):
__tablename__ = 'user'
id = db.Column(db.Integer,primary_key=True,autoincrement=True)
telephone = db.Column(db.String(11),nullable=False)
username = db.Column(db.String(100),nullable=False)
password = db.Column(db.String(100),nullable=False)
flask_migrate相关的命令 (执行数据库迁移)
python manage.py db init
将模型生成迁移文件,只要模型更改了,就需要执行一遍这个命令
python manage.py db migrate
将迁移文件真正的映射到数据库中。每次运行了migrate
命令后,就记得要运行这个命令
python manage.py db upgrade
装饰器
1、装饰器使用是通过@符号,放在函数的上面 2、装饰器中定义的函数,要使用 *args,**kwargs 两对兄弟组合\ 3、为了不改变装饰下函数的——name——属性 需要增加 {from functools import wraps}
from functools import wraps
def my_log(fun):
@wraps(fun)
def wrapper(*args,**kwargs):
print 'hello world'
fun(*args,**kwargs)
return wrapper
@my_log
def run():
print 'run'
run()
# 打印函数参数的名字
print run.__name__
@my_log
def add(a ,b):
c = a+b
print u'计算结果是 %s' % c