flask python mysql开发实战
时间: 2025-01-02 07:43:59 浏览: 11
### 使用Flask和Python与MySQL进行Web开发的实际项目
#### 创建虚拟环境并安装依赖包
为了确保项目的独立性和稳定性,建议创建一个新的虚拟环境。激活虚拟环境后,可以使用`pip install`命令来安装所需的库。
```bash
python3 -m venv myproject_env
source myproject_env/bin/activate # Linux 或 macOS
myproject_env\Scripts\activate # Windows
pip install flask mysql-connector-python
```
#### 配置数据库连接
在应用程序中配置MySQL数据库连接参数是非常重要的一步。这通常是在应用启动文件里完成的,比如`app.py`[^1]:
```python
from flask import Flask, render_template, request, redirect, url_for, flash
import mysql.connector
app = Flask(__name__)
db_config = {
'host': 'localhost',
'user': 'root', # 替换成自己的用户名
'password': '', # 替换成自己的密码
'database': 'test_db' # 数据库名称
}
conn = mysql.connector.connect(**db_config)
@app.route('/')
def index():
cursor = conn.cursor()
query = "SELECT * FROM users"
cursor.execute(query)
data = cursor.fetchall()
return render_template('index.html', data=data)
```
#### 设计登录页面表单
HTML模板用于呈现给用户的交互界面,在此例子中为用户提供了输入账户名和密码的地方。这部分工作可以在`templates/login.html`中定义[^2]:
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Login Page</title>
</head>
<body>
<h2>Account Login</h2>
<form action="{{url_for('login')}}" method="post">
Username:<br><input type="text" name="username"><br>
Password:<br><input type="password" name="pwd"><br>
<input type="submit" value="Login">
</form>
</body>
</html>
```
#### 处理登录请求逻辑
当用户提交表单数据时,服务器端需要验证这些信息是否有效,并决定下一步的动作。这个过程可以通过修改上述提到的应用程序入口脚本来实现:
```python
@app.route('/login', methods=['POST'])
def login():
username = request.form['username']
password = request.form['pwd']
cur = conn.cursor(dictionary=True)
sql_select_query = """select * from user where username=%s and password=md5(%s)"""
input_data = (username, password)
cur.execute(sql_select_query, input_data)
record = cur.fetchone()
if not record:
flash('Invalid credentials')
return redirect(url_for('index'))
session['loggedin'] = True
session['id'] = record['id']
session['username'] = record['username']
return 'Logged in successfully!'
```
请注意这里假设有一个名为'user'的数据表存储着注册过的用户资料以及经过MD5加密后的密码字段;实际部署前应考虑更安全的身份认证机制而不是简单的哈希函数。
阅读全文