import sqlite3
conn = sqlite3.connect('university.db')
cursor = conn.cursor()
cursor.execute('''
CREATE TABLE students (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
student_id TEXT UNIQUE NOT NULL,
major TEXT NOT NULL
);
''')
conn.commit()
conn.close()
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route('/add_student', methods=['POST'])
def add_student():
data = request.get_json()
name = data['name']
student_id = data['student_id']
major = data['major']
conn = sqlite3.connect('university.db')
cursor = conn.cursor()
cursor.execute("INSERT INTO students (name, student_id, major) VALUES (?, ?, ?)",
(name, student_id, major))
conn.commit()
conn.close()
return jsonify({"message": "Student added successfully"}), 201
if __name__ == '__main__':
app.run(debug=True)
try:
cursor.execute("SELECT * FROM students WHERE student_id=?", (student_id,))
existing_student = cursor.fetchone()
if existing_student:
raise ValueError("Student ID already exists")
except ValueError as e:
return str(e), 400
这样就能避免重复录入了。
def test_add_student():
client = app.test_client()
response = client.post('/add_student', json={
'name': 'Zhang San',
'student_id': '20230001',
'major': 'Computer Science'
})
assert response.status_code == 201