You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

执行Flask+Angular教程时遇SQLAlchemy OperationalError问题求助

问题:PostgreSQL连接报错 sqlalchemy.exc.OperationalError

在完成《使用Python Flask和Angular构建现代应用(第一部分)》教程时,遇到未在Stack Overflow提及的错误:

sqlalchemy.exc.OperationalError: (psycopg2.OperationalError) could not translate host name to address: Unknown server error

问题代码如下:

from datetime import datetime
from sqlalchemy import create_engine, Column, String, Integer, DateTime
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

db_url = 'localhost:5432'
db_name = 'FLASK_ANGULAR'
db_user = 'postgres'
db_password = 'Password@22'
engine = create_engine(f'postgresql://{db_user}:{db_password}@{db_url}/{db_name}')
Session = sessionmaker(bind=engine)

Base = declarative_base()


class Entity():
    id = Column(Integer, primary_key=True)
    created_at = Column(DateTime)
    updated_at = Column(DateTime)
    last_updated_by = Column(String)

    def __init__(self, created_by):
        self.created_at = datetime.now()
        self.updated_at = datetime.now()
        self.last_updated_by = created_by

错误排查与解决

该错误核心是无法解析数据库主机地址,导致PostgreSQL客户端无法连接服务器,以下是针对性修复步骤:

1. 修正连接字符串的主机解析问题

localhost依赖本地DNS解析,若解析异常会触发该错误,直接改用IP地址绕开解析逻辑:

db_host = '127.0.0.1'
db_port = '5432'
# 拆分主机和端口,格式更清晰
engine = create_engine(f'postgresql://{db_user}:{db_password}@{db_host}:{db_port}/{db_name}')

2. 确认PostgreSQL服务状态

  • Windows:打开服务管理器,找到postgresql-x64-xx服务,确保状态为「正在运行」
  • Linux/macOS:执行命令 sudo systemctl status postgresql 检查服务,未启动则执行 sudo systemctl start postgresql

3. 验证端口可达性

用以下命令测试5432端口是否开放:

# Windows
telnet 127.0.0.1 5432

# Linux/macOS
nc -zv 127.0.0.1 5432

若端口不通,检查防火墙规则是否拦截,或是否有其他程序占用5432端口。

4. 确认数据库与用户权限

  • 确保FLASK_ANGULAR数据库已创建,可通过PostgreSQL命令行执行:
    CREATE DATABASE FLASK_ANGULAR;
    
  • 验证postgres用户密码正确,且拥有该数据库的访问权限。

额外处理:特殊字符密码转义

密码包含@这类特殊字符时,需用URL转义避免连接字符串解析错误:

from urllib.parse import quote_plus

escaped_password = quote_plus(db_password)
engine = create_engine(f'postgresql://{db_user}:{escaped_password}@{db_host}:{db_port}/{db_name}')

内容的提问来源于stack exchange,提问作者Swantewit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 09:02:29