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:
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;
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.
Kod contoh:
CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL, password VARCHAR(50) NOT NULL );
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) );
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) );
4 Tulis kod Python
Gunakan bahasa pengaturcaraan Python untuk menyambung ke pangkalan data MySQL, dan tulis kod untuk memproses logik tapak web Soal Jawab.
Kod sampel:
import mysql.connector db = mysql.connector.connect( host="localhost", user="root", password="password", database="qanda" )
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
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
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
Contoh kod :
def get_question_list(): cursor = db.cursor() sql = "SELECT * FROM questions" cursor.execute(sql) return cursor.fetchall()
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()
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()
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()
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.
rrreee
6. RingkasanPada 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!