Rumah > pangkalan data > tutorial mysql > Bagaimana untuk membangunkan laman web Soal Jawab yang mudah menggunakan MySQL dan Python

Bagaimana untuk membangunkan laman web Soal Jawab yang mudah menggunakan MySQL dan Python

王林
Lepaskan: 2023-09-20 11:54:25
asal
1521 orang telah melayarinya

Bagaimana untuk membangunkan laman web Soal Jawab yang mudah menggunakan MySQL dan Python

Bagaimana untuk membangunkan laman web Q & A yang mudah menggunakan MySQL dan Python

introduction:
Laman web Q & A adalah salah satu platform sosial dalam talian yang paling popular di Internet. pengguna. Artikel ini akan memperincikan cara membangunkan tapak web Soal Jawab yang mudah menggunakan pangkalan data MySQL dan bahasa pengaturcaraan Python, dan menyediakan contoh kod khusus.

1. Persediaan persekitaran
Sebelum anda bermula, anda perlu memastikan bahawa pangkalan data MySQL dan persekitaran pengaturcaraan Python telah dipasang. Anda boleh belajar cara memasang dan mengkonfigurasi persekitaran yang berkaitan melalui pautan berikut:

  • Pangkalan data MySQL: https://dev.mysql.com/downloads/installer/
  • Persekitaran pengaturcaraan Python: https://www.python. org/downloads/

2. Cipta pangkalan data
Buat pangkalan data dalam MySQL untuk menyimpan data yang diperlukan untuk tapak web Soal Jawab. Anda boleh menggunakan alatan grafik MySQL (seperti phpMyAdmin) atau baris arahan untuk mencipta pangkalan data.

Kod contoh:

CREATE DATABASE qanda;
Salin selepas log masuk

3 Cipta jadual data
Untuk menyimpan maklumat seperti pengguna, soalan dan jawapan, jadual data yang sepadan perlu dibuat dalam pangkalan data. Cipta tiga jadual data dalam pangkalan data qanda: pengguna, soalan dan jawapan.

  1. Jadual data pengguna menyimpan maklumat pengguna, seperti nama pengguna, kata laluan, dsb.

Kod contoh:

CREATE TABLE users (
  id INT AUTO_INCREMENT PRIMARY KEY,
  username VARCHAR(50) NOT NULL,
  password VARCHAR(50) NOT NULL
);
Salin selepas log masuk
  1. Jadual data soalan menyimpan maklumat soalan, seperti soalan dan penyoal.

Kod contoh:

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)
);
Salin selepas log masuk
  1. jawapan data jadual menyimpan maklumat jawapan, seperti kandungan jawapan dan penjawab.

Contoh kod:

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)
);
Salin selepas log masuk

4 Tulis kod Python
Gunakan bahasa pengaturcaraan Python untuk menyambung ke pangkalan data MySQL, dan tulis kod untuk memproses logik tapak web Soal Jawab.

  1. Sambung ke pangkalan data:

Kod sampel:

import mysql.connector

db = mysql.connector.connect(
  host="localhost",
  user="root",
  password="password",
  database="qanda"
)
Salin selepas log masuk
  1. Pengguna berdaftar:

Kod contoh:

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
Salin selepas log masuk
  1. Tanya soalan:
  2. 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
    Salin selepas log masuk

Tanya soalan:

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
Salin selepas log masuk
  1. Jawab soalan:

Contoh kod :

def get_question_list():
    cursor = db.cursor()
    sql = "SELECT * FROM questions"
    cursor.execute(sql)
    return cursor.fetchall()
Salin selepas log masuk
  1. Dapatkan senarai soalan:

Contoh kod:

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()
Salin selepas log masuk
  1. Dapatkan senarai jawapan soalan:

Contoh kod:

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()
Salin selepas log masuk
    kod sampel:
  1. 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()
    Salin selepas log masuk
    5. Lari program laman web

    Gunakan Flask Tunggu rangka kerja Web menulis program tapak web yang ringkas, mulakan pelayan Web dan jadikan tapak web Soal Jawab boleh diakses dalam penyemak imbas.

    Contoh kod (menggunakan Flask):

    rrreee

    6. Ringkasan

    Pada ketika ini, pembangunan laman web Soal Jawab yang mudah selesai. Dalam artikel ini, kami memperkenalkan cara membangunkan tapak web Soal Jawab menggunakan MySQL dan Python, dan menyediakan contoh kod khusus. Saya berharap pembaca dapat mempelajari sedikit pengetahuan tentang pembangunan MySQL dan Python melalui artikel ini, dan boleh menggunakannya sebagai asas untuk pembangunan aplikasi yang lebih kompleks. Saya doakan anda semua berjaya dengan perkembangan anda!

    Atas ialah kandungan terperinci Bagaimana untuk membangunkan laman web Soal Jawab yang mudah menggunakan MySQL dan Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan