了解如何在 Windows 11 上使用 Python Flask 应用程序连接到 Postgres 数据库。

前期准备

  • 在Windows 机器上安装 Python3 并在 PATH 中设置
  • 要验证安装,只需在 Windows 开始菜单搜索栏中搜索 Python 3

flask sqlalchemy 指定字段名_数据库

1. 在 Windows 11 上安装 PostgresSQL

  • 在PostgreSQL 的下载页面获取 Windows 安装程序(https://www.postgresql.org/download/)
  • 使用默认值安装
  • 应该提示为 Postgres 安装的默认超级帐户选择密码。即 在这个postgres例子中用将使用 root 作为密码(这是一个非常糟糕的密码)
  • Postgres 使用哪个端口,可以使用默认的 5432
  • Postgres SQL 安装完成后,不需要运行 StackBuilder 获取其他插件
  • 现在应该可以在Windows 开始菜单搜索栏中搜索psql工具,这是shell CLI,可与 Postgres 数据库进行交互
  • 在启动 shell 时,可以选择要用于刚刚打开的 shell 连接的服务器、数据库、端口和用户; 这些字段预先填充了全新安装的值,只需输入在前面的步骤中选择的密码
  • 现在可以看到

flask sqlalchemy 指定字段名_Web_02

2. 列出数据库

  • psql提供了方便的元命令以在数据库服务器上运行,例如 l,这将列出所有可用的数据库
  • 在输出的数据库中,应该看到 postgres, template0template1; 在运行 CREATE DATABASE 命令时实际使用模板数据库,因为它们将被复制以创建新数据库,但现在将使用默认的 postgres

3. 创建并运行 Flask 应用程序

Flask 是微框架,只有构建 Web 应用程序所需的最低限度的依赖项,这个最低限度包括:

  • 控制器
  • cookie 和会话管理
  • 路由
  • 网页开发服务器
  • 命令行界面

使用 IDE 创建新项目,在该项目的根目录中, app.py文件,为 Flask 应用程序放一些启动代码:

from flask import Flask

 # creates an application that is named after the name of the file
app = Flask(__name__)

@app.route('/')
def index():
   return "it works"

# if running this module as a standalone program (cf. command in the Python Dockerfile)
if __name__ == "__main__":
   app.run(host="0.0.0.0")

这只是说route / 在 localhost 上的 Flask 应用程序应该显示一些文本。 但要使其正常工作,需要使用 pip 安装 Flask 。

可以通过打开 CMD shell 并点击 pip install Flask. 现在,从刚刚打开的 CMD shell 中,可以用cd进入到项目创建的任何目录中。

Flask 应用程序需要知道如何加载应用程序,例如它的入口点是什么; 要指定,运行 set FLASK_APP=app.py. 如果想有更好的开发者体验,也可以点击 set FLASK_DEBUG=True. 现在可以使用 python -m flask run --host=0.0.0.0

4. 将 Flask 应用程序连接到数据库服务器

将使用 psycopg2,这是 Python 世界中最流行的 PostgresSQL 适配器。 首先在CMD 中安装 pip install psycopg2

现在可以更新app.py,示例代码如下。

from flask import Flask
import psycopg2

 # creates an application that is named after the name of the file
app = Flask(__name__)

@app.route('/')
def index():
   conn = psycopg2.connect("postgresql://postgres:root@localhost:5432/postgres")
   return 'it works'

# if running this module as a standalone program (cf. command in the Python Dockerfile)
if __name__ == "__main__":
   app.run(host="0.0.0.0")

字符串 postgresql://postgres:root@localhost:5432/postgres是数据库的数据源名称:

  • postgresql://, 连接方案
  • postgres:root, 用户+密码(使用默认的 postgres用户在这里)
  • @localhost:5432, 主机名及其端口
  • /postgres,连接到哪个数据库(同样,默认的)

可以通过以下方式检查是否在浏览器中已成功连接 localhost:5000; 例如,在 DSN 中输入另一个值作为密码,将在下次重新加载页面时看到一条错误消息。

5. 总结 + 后续步骤

现在,在这里所做的是一个非常基本的设置,可以开始在 Windows 环境中玩转 Flask。 现在可以在网络应用程序中运行 SQL 查询,例如 。

# Open a cursor to perform database operations
cur = conn.cursor()

# Execute a query
cur.execute("SELECT * FROM my_data")

# Retrieve query results
records = cur.fetchall()

现在拥有创建由数据支持的 Web 应用程序的最低限度的设置 :)

不过,一旦熟悉了这一点,如果想更进一步,建议采取以下步骤:

  • 使用 Windows WSL 能够在开发过程中运行更常用的 Linux 命令
  • 学习如何 Dockerize Flask 应用程序'
  • 使用像 SQLAlchemy 这样的 ORM 从 Web 应用程序中与数据库交互

flask sqlalchemy 指定字段名_数据库_03