Jonvy

导航

Windows平台Flask网站搭建,SQL Server数据库查询

步骤 1:安装 Python 和配置虚拟环境

 

  1. 安装 Python:

    • 从 Python 官方网站下载并安装最新版的 Python 3.x(建议 3.8+)。

    • 重要: 在安装过程中,务必勾选 “Add Python to PATH” 选项。

  2. 创建和激活虚拟环境:

    • 打开 命令提示符 (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 包:

  1. 安装 Flask: pip install Flask

  2. 安装数据库连接库:pyodbc pip install pyodbc

  3. 安装 IIS 适配器:wfastcgi pip install wfastcgi

 

步骤 3:编写 Flask 应用程序

 

现在,我们将编写一个简单的 Flask 应用来连接 SQL Server 并查询数据。

  1. C:\flask_website 目录下,创建一个名为 app.py 的文件。

  2. 将以下代码复制粘贴到 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 仅用于开发环境
  3. 创建 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>

  4. 测试 Flask 应用 (可选,但推荐):

    • 在激活的虚拟环境中,运行:python app.py

    • 打开浏览器,访问 http://127.0.0.1:5000。你应该能看到用户列表或连接错误信息。

    • Ctrl+C 停止 Flask 应用。

步骤 4:配置 IIS 运行 Flask 应用 (使用 Wfastcgi)

 

现在,我们将 IIS 配置为托管你的 Flask 应用程序。

  1. 启用 IIS (如果尚未启用):

    • 打开 “控制面板” -> “程序” -> “程序和功能”

    • 点击 “启用或关闭 Windows 功能”

    • 确保勾选 “Internet Information Services” 下的以下组件:

      • Web 管理工具

      • 万维网服务

        • 应用程序开发功能:

          • CGI

          • ISAPI 扩展

          • ISAPI 筛选器

        • 常见 HTTP 功能 (默认会勾选)

        • 安全性 (默认会勾选)

    • 点击 “确定” 安装。

  2. 配置 Wfastcgi:

    • 打开 命令提示符 (CMD)PowerShell,并确保你的虚拟环境已激活(cd C:\flask_website 后运行 venv\Scripts\activate)。

    • 运行以下命令来配置 wfastcgiwfastcgi-enable 这个命令会输出一个 FastCGI 配置路径,例如 C:\Python3x\Lib\site-packages\wfastcgi.py。请记下这个路径。

  3. 配置 IIS 应用程序池:

    • 打开 “Internet Information Services (IIS) 管理器” (在 Windows 搜索中输入 IIS 即可找到)。

    • 在左侧连接面板中,展开你的电脑名称,然后点击 “应用程序池”

    • 在右侧的 “操作” 面板中,点击 “添加应用程序池…”

    • 名称:FlaskAppPool (或其他你喜欢的名称)。

    • .NET CLR 版本: 选择 “无托管代码”

    • 托管管道模式: 选择 “集成”

    • 点击 “确定”

    • 右键点击你刚创建的 FlaskAppPool,选择 “高级设置…”

    • “进程模型” 下,将 “标识” 设置为 “LocalSystem”“Custom account” (如果你想使用一个特定的 Windows 用户来运行,该用户需要对你的项目文件夹有读写权限)。对于简单测试,LocalSystem 通常可行。点击 “确定”

  4. 在 IIS 中添加网站:

    • 在 IIS 管理器左侧,右键点击 “网站”,选择 “添加网站…”

    • 网站名称:MyFlaskWebsite (或其他你喜欢的名称)。

    • 物理路径: 浏览到你的 Flask 项目根目录,即 C:\flask_website

    • 应用程序池: 选择你刚才创建的 FlaskAppPool

    • 类型:http

    • IP 地址: 保持 “全部未分配” 或选择你的局域网 IP。

    • 端口:80 (如果你有其他网站占用 80 端口,请选择其他端口,本例选用 9000)。

    • 主机名: 留空 (如果只是通过 IP 访问) 或填写你的域名 (如果你有)。

    • 点击 “确定”

  5. 配置 IIS 处理程序映射:

    • 在 IIS 管理器左侧,点击你刚刚创建的网站 MyFlaskWebsite

    • 在中间功能视图中,双击 “处理程序映射”

    • 在右侧的 “操作” 面板中,点击 “添加模块映射…”

    • 请求路径:*

    • 模块 (Module):

      • 点击下拉菜单,选择 FastCgiModule。如果列表中没有 FastCgiModule,那可能是你之前在“启用或关闭 Windows 功能”中没有勾选 CGIISAPI 扩展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 应用。

  1. 在你的 Flask 项目根目录 C:\flask_website 下,创建一个名为 web.config 的文件。

  2. 将以下 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_HANDLERapp.app 表示你的应用程序入口文件是 app.py,并且在这个文件中,你的 Flask 应用实例的变量名是 app

    • PYTHONPATH 指向你的 Flask 项目的根目录。

 

 

 

步骤6:测试你的网站

 

  1. 确保你的 SQL Server 实例正在运行。

  2. 确保你的 IIS 网站已启动。在 IIS 管理器中,右键点击你的网站 MyFlaskWebsite,选择 “管理网站” -> “启动” (如果它没有运行)。

  3. 打开浏览器,访问你的网站:

    • 本机访问: http://localhosthttp://127.0.0.1 (如果端口是 80)

    • 局域网访问: 获取你的电脑 IP 地址(在 CMD 中输入 ipconfig),然后在其他设备上访问 http://你的电脑IP地址 (例如 http://192.168.1.100)。如果你的 IIS 网站使用了非 80 端口,本例是9000,那么访问地址将是 http://你的电脑IP地址:9000

如果一切设置正确,你应该能看到从 SQL Server 数据库中查询到的用户列表!

posted on 2025-07-10 10:50  不亮  阅读(73)  评论(0)    收藏  举报