Maison  >  Article  >  base de données  >  Comment développer un site Web de questions-réponses simple en utilisant MySQL et Python

Comment développer un site Web de questions-réponses simple en utilisant MySQL et Python

王林
王林original
2023-09-20 11:54:251471parcourir

Comment développer un site Web de questions-réponses simple en utilisant MySQL et Python

Comment développer un site Web de questions-réponses simple à l'aide de MySQL et Python

Introduction :
Le site Web de questions-réponses est l'une des plateformes sociales en ligne les plus populaires sur Internet. Il permet aux utilisateurs de poser des questions et d'obtenir des réponses des autres. plate-forme des utilisateurs. Cet article détaillera comment développer un site Web de questions-réponses simple à l'aide de la base de données MySQL et du langage de programmation Python, et fournira des exemples de code spécifiques.

1. Configuration de l'environnement
Avant de commencer, vous devez vous assurer que la base de données MySQL et l'environnement de programmation Python ont été installés. Vous pouvez apprendre à installer et configurer l'environnement approprié via les liens suivants :

  • Base de données MySQL : https://dev.mysql.com/downloads/installer/
  • Environnement de programmation Python : https://www.python. org/downloads/

2. Créer une base de données
Créez une base de données dans MySQL pour stocker les données requises pour le site Web de questions-réponses. Vous pouvez utiliser les outils graphiques de MySQL (tels que phpMyAdmin) ou la ligne de commande pour créer une base de données.

Exemple de code :

CREATE DATABASE qanda;

3. Créer des tableaux de données
Afin de stocker des informations telles que les utilisateurs, les questions et les réponses, les tableaux de données correspondants doivent être créés dans la base de données. Créez trois tables de données dans la base de données qanda : utilisateurs, questions et réponses.

  1. La table de données des utilisateurs stocke les informations utilisateur, telles que le nom d'utilisateur, le mot de passe, etc.

Exemple de code :

CREATE TABLE users (
  id INT AUTO_INCREMENT PRIMARY KEY,
  username VARCHAR(50) NOT NULL,
  password VARCHAR(50) NOT NULL
);
  1. Le tableau de données des questions stocke les informations sur les questions, telles que la question et l'interrogateur.

Exemple de code :

CREATE TABLE questions (
  id INT AUTO_INCREMENT PRIMARY KEY,
  title VARCHAR(100) NOT NULL,
  content TEXT NOT NULL,
  user_id INT,
  FOREIGN KEY (user_id) REFERENCES users(id)
);
  1. Le tableau de données de réponses stocke les informations de réponse, telles que le contenu de la réponse et le répondeur.

Exemple de code :

CREATE TABLE answers (
  id INT AUTO_INCREMENT PRIMARY KEY,
  content TEXT NOT NULL,
  question_id INT,
  user_id INT,
  FOREIGN KEY (question_id) REFERENCES questions(id),
  FOREIGN KEY (user_id) REFERENCES users(id)
);

4. Écrivez du code Python
Utilisez le langage de programmation Python pour vous connecter à la base de données MySQL et écrivez du code pour traiter la logique du site Web de questions-réponses.

  1. Connectez-vous à la base de données :

Exemple de code :

import mysql.connector

db = mysql.connector.connect(
  host="localhost",
  user="root",
  password="password",
  database="qanda"
)
  1. Utilisateur enregistré :

Exemple de code :

def register_user(username, password):
    cursor = db.cursor()
    sql = "INSERT INTO users (username, password) VALUES (%s, %s)"
    val = (username, password)
    cursor.execute(sql, val)
    db.commit()
    return cursor.lastrowid
  1. Posez une question :

Exemple de code :

def ask_question(title, content, user_id):
    cursor = db.cursor()
    sql = "INSERT INTO questions (title, content, user_id) VALUES (%s, %s, %s)"
    val = (title, content, user_id)
    cursor.execute(sql, val)
    db.commit()
    return cursor.lastrowid
  1. Répondez à la question :

Exemple de code :

def answer_question(content, question_id, user_id):
    cursor = db.cursor()
    sql = "INSERT INTO answers (content, question_id, user_id) VALUES (%s, %s, %s)"
    val = (content, question_id, user_id)
    cursor.execute(sql, val)
    db.commit()
    return cursor.lastrowid
  1. Obtenez la liste des questions :

Exemple de code :

def get_question_list():
    cursor = db.cursor()
    sql = "SELECT * FROM questions"
    cursor.execute(sql)
    return cursor.fetchall()
  1. Obtenez la liste des questions et réponses :

Exemple de code :

def get_answer_list(question_id):
    cursor = db.cursor()
    sql = "SELECT * FROM answers WHERE question_id = %s"
    val = (question_id,)
    cursor.execute(sql, val)
    return cursor.fetchall()
  1. Exemple de code complet :
import mysql.connector

db = mysql.connector.connect(
  host="localhost",
  user="root",
  password="password",
  database="qanda"
)

def register_user(username, password):
    cursor = db.cursor()
    sql = "INSERT INTO users (username, password) VALUES (%s, %s)"
    val = (username, password)
    cursor.execute(sql, val)
    db.commit()
    return cursor.lastrowid

def ask_question(title, content, user_id):
    cursor = db.cursor()
    sql = "INSERT INTO questions (title, content, user_id) VALUES (%s, %s, %s)"
    val = (title, content, user_id)
    cursor.execute(sql, val)
    db.commit()
    return cursor.lastrowid

def answer_question(content, question_id, user_id):
    cursor = db.cursor()
    sql = "INSERT INTO answers (content, question_id, user_id) VALUES (%s, %s, %s)"
    val = (content, question_id, user_id)
    cursor.execute(sql, val)
    db.commit()
    return cursor.lastrowid

def get_question_list():
    cursor = db.cursor()
    sql = "SELECT * FROM questions"
    cursor.execute(sql)
    return cursor.fetchall()

def get_answer_list(question_id):
    cursor = db.cursor()
    sql = "SELECT * FROM answers WHERE question_id = %s"
    val = (question_id,)
    cursor.execute(sql, val)
    return cursor.fetchall()

5. Exécutez le programme de site Web
Utilisez Flask Attendez que le framework Web écrive un programme de site Web simple, démarrez le serveur Web et rendez le site Web de questions-réponses accessible dans le navigateur.

Exemple de code (en utilisant Flask) :

from flask import Flask, request, render_template

app = Flask(__name__)

# 注册用户
@app.route('/register', methods=['POST'])
def handle_register():
    username = request.form.get('username')
    password = request.form.get('password')
    user_id = register_user(username, password)
    return f"User registered with ID: {user_id}"

# 提问问题
@app.route('/ask', methods=['POST'])
def handle_ask():
    title = request.form.get('title')
    content = request.form.get('content')
    user_id = int(request.form.get('user_id'))
    question_id = ask_question(title, content, user_id)
    return f"Question asked with ID: {question_id}"

# 回答问题
@app.route('/answer', methods=['POST'])
def handle_answer():
    content = request.form.get('content')
    question_id = int(request.form.get('question_id'))
    user_id = int(request.form.get('user_id'))
    answer_id = answer_question(content, question_id, user_id)
    return f"Answered with ID: {answer_id}"

# 获取问题列表
@app.route('/questions')
def handle_questions():
    questions = get_question_list()
    return render_template('questions.html', questions=questions)

# 获取问题回答列表
@app.route('/answers/<question_id>')
def handle_answers(question_id):
    answers = get_answer_list(int(question_id))
    return render_template('answers.html', answers=answers)

if __name__ == '__main__':
    app.run()

6. Résumé
À ce stade, le développement d'un simple site Web de questions-réponses est terminé. Dans cet article, nous expliquons comment développer un site Web de questions-réponses à l'aide de MySQL et Python, et fournissons des exemples de code spécifiques. J'espère que les lecteurs pourront acquérir des connaissances sur le développement MySQL et Python grâce à cet article et pourront l'utiliser comme base pour le développement d'applications plus complexes. Je vous souhaite à tous bonne chance dans votre développement !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn