Windows平台Flask网站搭建,SQL Server数据库查询
步骤 1:安装 Python 和配置虚拟环境
-
安装 Python:
-
从 Python 官方网站下载并安装最新版的 Python 3.x(建议 3.8+)。
-
重要: 在安装过程中,务必勾选 “Add Python to PATH” 选项。
-
-
创建和激活虚拟环境:
-
打开 命令提示符 (CMD) 或 PowerShell。
-
选择一个目录来存放你的项目,比如
C:\query_site
。 -
进入该目录:
cd C:\query_site
-
创建虚拟环境:
python -m venv flask_env
- 使用
cd
命令切换到正确的目录C:\query_site -
激活虚拟环境:flask_env\Scripts\activate (在 PowerShell 中可能是
venv\Scripts\Activate.ps1
) -
激活后,你的命令行前面会显示
(venv)
,表示你已进入虚拟环境。
-
步骤 2:安装 Flask 和数据库连接库
在激活的虚拟环境中,安装所需的 Python 包:
-
安装 Flask:
pip install Flask
-
安装数据库连接库:
pyodbc
pip install pyodbc
-
安装 IIS 适配器:
wfastcgi
pip install wfastcgi
步骤 3:编写 Flask 应用程序
现在,我们将编写一个简单的 Flask 应用来连接 SQL Server 并查询数据。
-
在
C:\flask_website
目录下,创建一个名为app.py
的文件。 -
将以下代码复制粘贴到
app.py
中。请将连接字符串中的服务器名、数据库名、用户名和密码替换为你的实际信息。from flask import Flask, render_template
import pyodbc
app = Flask(__name__)
# --- SQL Server 连接配置 ---
# 根据你的 SQL Server 配置修改以下信息
# 如果是本地实例,Server 可以是 'localhost' 或你的电脑名
# 如果使用 Windows 身份验证,将 Trusted_Connection=yes
# 如果使用 SQL Server 身份验证,需要 User ID 和 Password
# 示例1: 使用 SQL Server 身份验证
DB_CONFIG = {
'server': 'XXX-XXXSQL01', # 例如 'localhost' 或 'SERVER_NAME\SQLEXPRESS'
'database': 'XXXXXX_XX',
'username': '********', # 或你的SQL Server用户名
'password': '********',
'driver': '{SQL Server Native Client 11.0}' # 确保你的系统安装了此驱动
}
# 示例2: 使用 Windows 身份验证 (如果你用的是Windows集成认证)
# DB_CONFIG = {
# 'server': '你的SQLServer实例名或IP地址',
# 'database': 'MyWebsiteDB',
# 'trusted_connection': 'yes',
# 'driver': '{SQL Server Native Client 11.0}'
# }
def get_db_connection():
conn_str = (
f"DRIVER={DB_CONFIG['driver']};"
f"SERVER={DB_CONFIG['server']};"
f"DATABASE={DB_CONFIG['database']};"
)
if 'trusted_connection' in DB_CONFIG and DB_CONFIG['trusted_connection'] == 'yes':
conn_str += "Trusted_Connection=yes;"
else:
conn_str += (
f"UID={DB_CONFIG['username']};"
f"PWD={DB_CONFIG['password']};"
)
try:
conn = pyodbc.connect(conn_str)
return conn
except pyodbc.Error as ex:
sqlstate = ex.args[0]
print(f"数据库连接错误: {sqlstate}")
return None
@app.route('/')
def index():
py_results = []
conn = get_db_connection()
if conn:
cursor = conn.cursor()
try:
cursor.execute("select ID_QUALPF,QUALPF_LIBELLE from T_QUALPF")
py_results = cursor.fetchall()
except pyodbc.Error as ex:
sqlstate = ex.args[0]
print(f"查询错误: {sqlstate}")
finally:
cursor.close()
conn.close()
return render_template('index.html', web_results=py_results)
if __name__ == '__main__':
app.run(debug=True) # debug=True 仅用于开发环境 -
创建 HTML 模板文件:
-
在
C:\flask_website
目录下,创建一个名为templates
的文件夹。 -
在
templates
文件夹内,创建一个名为index.html
的文件。 -
将以下 HTML 代码复制粘贴到
index.html
中:
HTML<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>追溯查询</title>
<style>
body { font-family: Arial, sans-serif; margin: 20px; background-color: #f4f4f4; }
h1 { color: #333; text-align: center; }
table { width: 80%; border-collapse: collapse; margin: 20px auto; background-color: #fff; box-shadow: 0 0 10px rgba(0,0,0,0.1); }
th, td { border: 1px solid #ddd; padding: 8px; text-align: left; }
th { background-color: #f2f2f2; }
.no-users { text-align: center; color: #888; }
</style>
</head>
<body>
<h1>SQL Server 质量状态列表</h1>
{% if web_results %}
<table>
<thead>
<tr>
<th>ID</th>
<th>描述</th>
</tr>
</thead>
<tbody>
{% for result in web_results %}
<tr>
<td>{{ result.ID_QUALPF}}</td>
<td>{{ result.QUALPF_LIBELLE}}</td>
</tr>
{% endfor %}
</tbody>
</table>
{% else %}
<p class="no-users">未找到用户或数据库连接失败。</p>
{% endif %}
</body>
</html> -
-
测试 Flask 应用 (可选,但推荐):
-
在激活的虚拟环境中,运行:
python app.py
-
打开浏览器,访问
http://127.0.0.1:5000
。你应该能看到用户列表或连接错误信息。 -
按
Ctrl+C
停止 Flask 应用。
步骤 4:配置 IIS 运行 Flask 应用 (使用 Wfastcgi)
现在,我们将 IIS 配置为托管你的 Flask 应用程序。
-
启用 IIS (如果尚未启用):
-
打开 “控制面板” -> “程序” -> “程序和功能”。
-
点击 “启用或关闭 Windows 功能”。
-
确保勾选 “Internet Information Services” 下的以下组件:
-
Web 管理工具
-
万维网服务
-
应用程序开发功能:
-
CGI
-
ISAPI 扩展
-
ISAPI 筛选器
-
-
常见 HTTP 功能 (默认会勾选)
-
安全性 (默认会勾选)
-
-
-
点击 “确定” 安装。
-
-
配置 Wfastcgi:
-
打开 命令提示符 (CMD) 或 PowerShell,并确保你的虚拟环境已激活(
cd C:\flask_website
后运行venv\Scripts\activate
)。 -
运行以下命令来配置
wfastcgi
:wfastcgi-enable
这个命令会输出一个 FastCGI 配置路径,例如C:\Python3x\Lib\site-packages\wfastcgi.py
。请记下这个路径。 -
-
配置 IIS 应用程序池:
-
打开 “Internet Information Services (IIS) 管理器” (在 Windows 搜索中输入
IIS
即可找到)。 -
在左侧连接面板中,展开你的电脑名称,然后点击 “应用程序池”。
-
在右侧的 “操作” 面板中,点击 “添加应用程序池…”。
-
名称:
FlaskAppPool
(或其他你喜欢的名称)。 -
.NET CLR 版本: 选择 “无托管代码”。
-
托管管道模式: 选择 “集成”。
-
点击 “确定”。
-
右键点击你刚创建的
FlaskAppPool
,选择 “高级设置…”。 -
在 “进程模型” 下,将 “标识” 设置为 “LocalSystem” 或 “Custom account” (如果你想使用一个特定的 Windows 用户来运行,该用户需要对你的项目文件夹有读写权限)。对于简单测试,
LocalSystem
通常可行。点击 “确定”。
-
-
在 IIS 中添加网站:
-
在 IIS 管理器左侧,右键点击 “网站”,选择 “添加网站…”。
-
网站名称:
MyFlaskWebsite
(或其他你喜欢的名称)。 -
物理路径: 浏览到你的 Flask 项目根目录,即
C:\flask_website
。 -
应用程序池: 选择你刚才创建的
FlaskAppPool
。 -
类型:
http
。 -
IP 地址: 保持 “全部未分配” 或选择你的局域网 IP。
-
端口:
80
(如果你有其他网站占用 80 端口,请选择其他端口,本例选用9000
)。 -
主机名: 留空 (如果只是通过 IP 访问) 或填写你的域名 (如果你有)。
-
点击 “确定”。
-
-
配置 IIS 处理程序映射:
-
在 IIS 管理器左侧,点击你刚刚创建的网站
MyFlaskWebsite
。 -
在中间功能视图中,双击 “处理程序映射”。
-
-
在右侧的 “操作” 面板中,点击 “添加模块映射…”。
-
请求路径:
*
-
模块 (Module):
-
点击下拉菜单,选择
FastCgiModule
。如果列表中没有FastCgiModule
,那可能是你之前在“启用或关闭 Windows 功能”中没有勾选 CGI、ISAPI 扩展 或 ISAPI 筛选器,需要回去检查并安装。
-
-
模块:
FastCgiModule
-
可执行文件: 这里需要填写 Python 解释器的路径和
wfastcgi.py
的路径,格式为:你的Python虚拟环境路径\venv\Scripts\python.exe|"C:\你的Python虚拟环境路径\venv\Lib\site-packages\wfastcgi.py"
例如:C:\flask_website\venv\Scripts\python.exe|"C:\flask_website\venv\Lib\site-packages\wfastcgi.py"
注意: 如果你的虚拟环境名称不同,请替换venv
。路径中的wfastcgi.py
是你之前运行wfastcgi-enable
时输出的路径。 -
名称:
Flask FastCGI
(或其他你喜欢的名称)。 -
点击 “请求限制…”,确保 “映射” 选项卡中的 “调用处理程序,如果文件或文件夹存在”未勾选。
-
点击 “确定”。
-
在弹出的确认对话框中,点击 “是” 允许创建 FastCGI 应用程序。
步骤 5:创建 web.config
文件
IIS 需要一个 web.config
文件来告诉它如何处理你的 Flask 应用。
-
在你的 Flask 项目根目录
C:\flask_website
下,创建一个名为web.config
的文件。 -
将以下 XML 代码复制粘贴到
web.config
中。同样,请将scriptProcessor
的路径替换为你的实际路径(与上一步处理程序映射中的可执行文件路径一致)。XML<?xml version="1.0" encoding="utf-8"?> <configuration> <appSettings> <add key="WSGI_HANDLER" value="app.app" /> <add key="PYTHONPATH" value="C:\flask_website" /> </appSettings> <system.webServer> </system.webServer> </configuration>
-
WSGI_HANDLER
:app.app
表示你的应用程序入口文件是app.py
,并且在这个文件中,你的 Flask 应用实例的变量名是app
。 -
PYTHONPATH
: 指向你的 Flask 项目的根目录。
-
步骤6:测试你的网站
-
确保你的 SQL Server 实例正在运行。
-
确保你的 IIS 网站已启动。在 IIS 管理器中,右键点击你的网站
MyFlaskWebsite
,选择 “管理网站” -> “启动” (如果它没有运行)。 -
打开浏览器,访问你的网站:
-
本机访问:
http://localhost
或http://127.0.0.1
(如果端口是 80) -
局域网访问: 获取你的电脑 IP 地址(在 CMD 中输入
ipconfig
),然后在其他设备上访问http://你的电脑IP地址
(例如http://192.168.1.100
)。如果你的 IIS 网站使用了非 80 端口,本例是9000,那么访问地址将是http://你的电脑IP地址:9000
。
-
如果一切设置正确,你应该能看到从 SQL Server 数据库中查询到的用户列表!