Flask新人求问,数据库初始化在什么时候做

Flask新人求问,数据库初始化在什么时候做,第1张

数据库初始化工作,比如建表这种工作,肯定一开始就做好了。但是我没有找到flask有什么初始化的方法,我直接写在appname.py这个文件里的时候,每次请求都会运行,这不就浪费了吗?网站部署后,数据库表肯定是要建好了的,用户请求的时候肯定不需要再去做建表的事。

所以想问数据库初始化的方法写在哪?

初学flask,代码部署在新浪云SAE,现在只是刚开始学,学到使用数据库,数据库用的MySQLdb,因为SAE内置支持的这个。

上下代码:

import MySQLdb

from flask import Flask, g, request

app = Flask(__name__)

app.debug = True

from sae.const import (MYSQL_HOST, MYSQL_HOST_S,

MYSQL_PORT, MYSQL_USER, MYSQL_PASS, MYSQL_DB

)

status = __name__

initdbStatus = 'initdbStatus'

def init_db():

db = MySQLdb.connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS,

MYSQL_DB, port=int(MYSQL_PORT))

cursor = db.cursor()

cursor.execute("create table if not exists demo (id INT NOT NULL AUTO_INCREMENT,title text not null,text text not null, PRIMARY KEY (id))")

cursor.execute('select * from demo')

cursor.close()

global initdbStatus

initdbStatus = 'initdbStatus:finished'

用 Flask-SQLAlchemy(SQLAlchemy ORM 模块的 Flask 定制版)。这个在定义 schema、连接数据库、增删改查方面都给你提供极大的便利。

这个对象就包含 sqlalchemy 和 sqlalchemy.orm 中的所有函数和助手。此外它还提供一个名为 Model 的类,用于作为声明模型时的 delarative 基类:

from flask import Flask

from flask.ext.sqlalchemy import SQLAlchemy

app = Flask(__name__)

app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////tmp/test.db'

db = SQLAlchemy(app)

class User(db.Model):

id = db.Column(db.Integer, primary_key=True)

username = db.Column(db.String(80), unique=True)

email = db.Column(db.String(120), unique=True)

def __init__(self, username, email):

self.username = username

self.email = email

def __repr__(self):

return '<User %r>' % self.username


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/8533792.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-17
下一篇 2023-04-17

发表评论

登录后才能评论

评论列表(0条)

保存