将py中列导入MySQL
demo目录下
==create_tables.py ==
from demo import db,create_app
from demo.models import *#导入models内部所有类
app = create_app()#创建flask对象
app_ctx = app.app_context()#实现上下文 连接数据库
with app_ctx:#打开连接 用完自动关闭 释放资源
db.create_all()#连接数据库,创建models里面所有类
models.py
from demo import db
class User(db.Model):
__tablename__ = 'user'
id = db.Column(db.INTEGER, primary_key=True)
username = db.Column(db.String(80),unique = True)
password = db.Column(db.String(80),nullable = False)
init.py
from flask_sqlalchemy import SQLAlchemy
from flask import Flask
db = SQLAlchemy()#db是导入的连接数据库的库内类创建的对象
def create_app():
app = Flask(__name__)
app.config.from_object('settings')#从settings加载配置文件
#config是属性 .from_object是一个方法 从settings里面加载全部东西 读到app
db = SQLAlchemy()
db.init_app(app)#初始化app
#用app 里面读取的参数 初始化db 并返回app
return app
与demo并列
manage.py
from demo import create_app
app = create_app()
if __name__ == '__main__':
app.run()#启动程序
settings.py
DIALECT = 'mysql'
DRIVER = 'pymysql'
USERNAME = 'root'
PASSWORD = 'root'
HOST = 'localhost'
PORT = '3306'
DATABASE = 'gly'
SQLALCHEMY_DATABASE_URI = '{}+{}://{}:{}@{}:{}/{}?charset=utf8'.format(
DIALECT, DRIVER, USERNAME, PASSWORD, HOST, PORT, DATABASE
)
SQLALCHEMY_COMMIT_ON_TEARDOWN = True
SQLALCHEMY_TRACK_MODIFICATIONS = True
SQLALCHEMY_POOL_SIZE = 10#连接池大小
SQLALCHEMY_MAX_OVERFLOW = 5#最大连接数
py与mysql之间session
from demo import create_app, db
from demo.models import User
app = create_app()
@app.route('/')
def index():
user = User()
user.username = "曹国华"
user.password = "123"
db.session.add(user)
db.session.commit()
if __name__ == '__main__':
app.run()#启动程序