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

王林
Freigeben: 2023-09-20 11:54:25
Original
1519 Leute haben es durchsucht

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;
Nach dem Login kopieren

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
);
Nach dem Login kopieren
  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)
);
Nach dem Login kopieren
  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)
);
Nach dem Login kopieren

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"
)
Nach dem Login kopieren
  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
Nach dem Login kopieren
  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
Nach dem Login kopieren
  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
Nach dem Login kopieren
  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()
Nach dem Login kopieren
  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()
Nach dem Login kopieren
  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()
Nach dem Login kopieren

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()
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage