Heim >Datenbank >MySQL-Tutorial >So entwickeln Sie eine einfache Q&A-Website mit MySQL und Python

So entwickeln Sie eine einfache Q&A-Website mit MySQL und Python

王林
王林Original
2023-09-20 11:54:251538Durchsuche

So entwickeln Sie eine einfache Q&A-Website mit MySQL und Python

So entwickeln Sie eine einfache Q&A-Website mit MySQL und Python

Einführung:
Die Q&A-Website ist eine der beliebtesten sozialen Online-Plattformen im Internet und bietet Benutzern die Möglichkeit, Fragen zu stellen und Antworten von anderen zu erhalten Benutzer. In diesem Artikel wird detailliert beschrieben, wie Sie mithilfe der MySQL-Datenbank und der Programmiersprache Python eine einfache Q&A-Website entwickeln, und es werden spezifische Codebeispiele bereitgestellt.

1. Umgebungseinrichtung
Bevor Sie beginnen, müssen Sie sicherstellen, dass die MySQL-Datenbank und die Python-Programmierumgebung installiert sind. Über die folgenden Links erfahren Sie, wie Sie die entsprechende Umgebung installieren und konfigurieren:

  • MySQL-Datenbank: https://dev.mysql.com/downloads/installer/
  • Python-Programmierumgebung: https://www.python. org/downloads/

2. Erstellen Sie eine Datenbank
Erstellen Sie eine Datenbank in MySQL, um die für die Q&A-Website erforderlichen Daten zu speichern. Sie können die grafischen Tools von MySQL (z. B. phpMyAdmin) oder die Befehlszeile verwenden, um eine Datenbank zu erstellen.

Beispielcode:

CREATE DATABASE qanda;

3. Datentabellen erstellen
Um Informationen wie Benutzer, Fragen und Antworten zu speichern, müssen entsprechende Datentabellen in der Datenbank erstellt werden. Erstellen Sie drei Datentabellen in der Qanda-Datenbank: Benutzer, Fragen und Antworten.

  1. In der Benutzerdatentabelle werden Benutzerinformationen wie Benutzername, Passwort usw. gespeichert.

Beispielcode:

CREATE TABLE users (
  id INT AUTO_INCREMENT PRIMARY KEY,
  username VARCHAR(50) NOT NULL,
  password VARCHAR(50) NOT NULL
);
  1. In der Fragendatentabelle werden Frageninformationen wie die Frage und der Fragesteller gespeichert.

Beispielcode:

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. Antwortdatentabelle speichert Antwortinformationen, wie Antwortinhalt und Antwortender.

Beispielcode:

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. Python-Code schreiben
Verwenden Sie die Programmiersprache Python, um eine Verbindung zur MySQL-Datenbank herzustellen, und schreiben Sie Code, um die Logik der Q&A-Website zu verarbeiten.

  1. Mit Datenbank verbinden:

Beispielcode:

import mysql.connector

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

Beispielcode:

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. Stellen Sie eine Frage:

Beispielcode:

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. Beantworten Sie die Frage:

Beispielcode:

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. Holen Sie sich die Liste der Fragen:

Beispielcode:

def get_question_list():
    cursor = db.cursor()
    sql = "SELECT * FROM questions"
    cursor.execute(sql)
    return cursor.fetchall()
  1. Holen Sie sich die Liste der Fragen und Antworten:

Beispielcode:

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. Vollständiger Beispielcode:
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. Führen Sie das Website-Programm aus.
Verwenden Sie Flask. Warten Sie, bis das Web-Framework ein einfaches Website-Programm geschrieben hat, starten Sie den Webserver und machen Sie die Q&A-Website im Browser zugänglich.

Beispielcode (mit 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. Zusammenfassung
An diesem Punkt ist die Entwicklung einer einfachen Q&A-Website abgeschlossen. In diesem Artikel stellen wir vor, wie man eine Q&A-Website mit MySQL und Python entwickelt, und stellen spezifische Codebeispiele bereit. Ich hoffe, dass die Leser durch diesen Artikel etwas Wissen über die MySQL- und Python-Entwicklung erlangen und es als Grundlage für die Entwicklung komplexerer Anwendungen nutzen können. Ich wünsche euch allen viel Glück bei eurer Entwicklung!

Das obige ist der detaillierte Inhalt vonSo entwickeln Sie eine einfache Q&A-Website mit MySQL und Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn