定制excel命令并插入到数据库中
import osfrom flask import Flask
from flask.cli import AppGroup
import click
import pymysql
from openpyxl import load_workbookapp = Flask(__name__)@app.cli.group()
def excel():"""Excel related commands."""pass@excel.command("import")
@click.argument("excel_path", type=click.Path(exists=True))
def create_user(excel_path):"""Import data from Excel to the 'user' table."""try:# 数据库连接配置db_config = {"host": "127.0.0.1","user": "root","password": "123456","db": "flask_base","port": 3307,}# 连接数据库with pymysql.connect(**db_config) as connection:with connection.cursor() as cursor:# 加载Excel文件if not os.path.isfile(excel_path) or not excel_path.endswith(('.xlsx', '.xls')):click.echo("Invalid Excel file path or format.")returnwb = load_workbook(excel_path)sheet = wb.active# 假设Excel的第一行为表头,从第一行开始为数据for row in sheet.iter_rows(min_row=1, values_only=True):name, email, ctime = row # 根据实际Excel结构调整sql = "INSERT INTO user (name, email, ctime) VALUES (%s, %s, %s)"cursor.execute(sql, (name, email, ctime))# 提交事务connection.commit()click.echo("Data imported successfully.")except Exception as e:click.echo(f"An error occurred: {e}")if __name__ == "__main__":app.run()
#执行 flask --app app.py excel import .\user.xlsx
django中自定制命令
# 1 app下新建文件夹management和commands
# 2 在该文件夹下新建py文件,随便命名(命令名)# 3 在py文件中写代码
from django.core.management.base import BaseCommand
class Command(BaseCommand):help = '命令提示'def add_arguments(self, parser):parser.add_argument('path', nargs='*', type=str,)def handle(self, *args, **kwargs):print('开始导入')print(args)print(kwargs)
# 4 使用命令
python manage.py py文件(命令名)
缓存到redis里面
from flask import Flask
from flask_caching import Cache,SimpleCacheconfig = {"CACHE_REDIS_URL": "redis://localhost:6379/0", # Redis服务器的URL和数据库号,默认端口6379,数据库0"DEBUG": True, # some Flask specific configs"CACHE_TYPE": "redis", # Flask-Caching related configs ,可以缓存到redis"CACHE_DEFAULT_TIMEOUT": 300
}
# 初始化Flask应用
app = Flask(__name__)
app.config.from_mapping(config)# 初始化缓存
cache = Cache(app)@app.route('/')
def index():cache.set('name', 'hope')return 'index'#取值
@app.route('/get')
def get():res=cache.get('name')return resif __name__ == '__main__':app.run()