You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

90 lines
2.9 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

from datetime import datetime
from flask import request, jsonify
from flask import *
from flask_sqlalchemy import SQLAlchemy
import pymysql
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:LH20021212@localhost:3306/智能家居系统'
db = SQLAlchemy(app)
try:
with app.app_context():
# 尝试连接数据库
db.create_all()
print("数据库连接成功!")
except Exception as e:
print(f"数据库连接失败: {str(e)}")
class JiaJu(db.Model):
_tablename_ = 'JiaJu' # 这里应该是__tablename__
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(100), nullable=False)
color = db.Column(db.String(50))
brand = db.Column(db.String(50))
price = db.Column(db.Float, nullable=False)
production_date = db.Column(db.Date, nullable=False)
#增
@app.route('/add_jiaju', methods=['POST'])
def add_jiaju():
data = request.get_json() # 假设前端发送的是JSON数据
new_jiaju = JiaJu(
name=data['name'],
color=data.get('color'), # 如果color可选则使用get
brand=data.get('brand'),
price=data['price'],
production_date=datetime.strptime(data['production_date'], '%Y-%m-%d') # 假定日期格式为YYYY-MM-DD
)
db.session.add(new_jiaju)
db.session.commit()
return jsonify({"message": "家居添加成功"}), 201
#查
@app.route('/jiaju', methods=['GET'])
def get_all_jiaju():
jiaju_list = JiaJu.query.all()
result = [{"id": item.id, "name": item.name, "color": item.color, "brand": item.brand,
"price": item.price, "production_date": item.production_date.strftime('%Y-%m-%d')} for item in jiaju_list]
return jsonify(result)
#获取
@app.route('/jiaju/<int:jiaju_id>', methods=['GET'])
def get_jiaju(jiaju_id):
jiaju = JiaJu.query.get_or_404(jiaju_id)
return jsonify({
"id": jiaju.id,
"name": jiaju.name,
"color": jiaju.color,
"brand": jiaju.brand,
"price": jiaju.price,
"production_date": jiaju.production_date.strftime('%Y-%m-%d')
})
#更
@app.route('/jiaju/<int:jiaju_id>', methods=['PUT'])
def update_jiaju(jiaju_id):
jiaju = JiaJu.query.get_or_404(jiaju_id)
data = request.get_json()
if 'name' in data:
jiaju.name = data['name']
if 'color' in data:
jiaju.color = data['color']
if 'brand' in data:
jiaju.brand = data['brand']
if 'price' in data:
jiaju.price = data['price']
if 'production_date' in data:
jiaju.production_date = datetime.strptime(data['production_date'], '%Y-%m-%d')
db.session.commit()
return jsonify({"message": "家居信息更新成功"})
#删
@app.route('/jiaju/<int:jiaju_id>', methods=['DELETE'])
def delete_jiaju(jiaju_id):
jiaju = JiaJu.query.get_or_404(jiaju_id)
db.session.delete(jiaju)
db.session.commit()
return jsonify({"message": "家居删除成功"})