ValueError:以 10 为基数的 int() 的文字无效:'postgres'

问题描述 投票:0回答:1

我是数据库工作的初学者,但我正在自己努力)。我使用 Makos、PayCharm、Python、Alembic、Postgre。我已经完成了所有的准备工作,即创建并检查了虚拟环境的运行情况,创建了所有必要的文件和目录(我将添加项目架构的照片)。此时的任务是执行第一个命令,即 - alembic revision --autogenerate -m "Database create",之后我得到一个错误(这是主题的标题)

问题详情:

文件如下所示:Project/migrations/env.py

from logging.config import fileConfig
from sqlalchemy import engine_from_config
from sqlalchemy import pool
from alembic import context
from config import DB_HOST, DB_PORT, DB_USER, DB_NAME, DB_PASS
from models.models import metadata

config = context.config

section = config.config_ini_section
config.set_section_option(section, "DB_HOST", DB_HOST)
config.set_section_option(section, "DB_PORT", DB_PORT)
config.set_section_option(section, "DB_USER", DB_USER)
config.set_section_option(section, "DB_NAME", DB_NAME)
config.set_section_option(section, "DB_PASS", DB_PASS)

文件如下所示:Project/.env

DB_HOST=localhost
DB_PORT=5432
DB_NAME=postgres
DB_USER=postgres
DB_PASS=postgres

文件如下所示:Project/config.py

from dotenv import load_dotenv
import os

load_dotenv()

DB_HOST = os.environ.get("DB_HOST")
DB_PORT = os.environ.get("DB_PORT")
DB_NAME = os.environ.get("DB_NAME")
DB_USER = os.environ.get("DB_USER")
DB_PASS = os.environ.get("DB_PASS")

文件如下所示:Project/alembic.ini


[alembic]

script_location = migrations

prepend_sys_path = .

version_path_separator = os  # Use os.pathsep. Default configuration used for new projects.

sqlalchemy.url = postgresql://%(DB_HOST)s:%(DB_PORT)s@%(DB_PASS)s:%(DB_USER)s/%(DB_NAME)s


[post_write_hooks]

[loggers]
keys = root,sqlalchemy,alembic

[handlers]
keys = console

[formatters]
keys = generic

[logger_root]
level = WARN
handlers = console
qualname =

[logger_sqlalchemy]
level = WARN
handlers =
qualname = sqlalchemy.engine

[logger_alembic]
level = INFO
handlers =
qualname = alembic

[handler_console]
class = StreamHandler
args = (sys.stderr,)
level = NOTSET
formatter = generic

[formatter_generic]
format = %(levelname)-5.5s [%(name)s] %(message)s
datefmt = %H:%M:%S

当我进入文件:.env并重新排列端口的值,例如传递或命名时,错误不同,但本质是相似的!

alembic
1个回答
0
投票

我遇到了类似的错误

ValueError: invalid literal for int() with base 10: ''
,这只是我的 .env 文件中定义数据库端口时的拼写错误。

在我的例子中,端口值为空,从而导致错误。我假设您有类似的错误,其中“postgres”作为数据库端口传递,这是不正确的。

© www.soinside.com 2019 - 2024. All rights reserved.