以 10 为底的 int() 的无效文字:'PORT'

invalid literal for int() with base 10: 'PORT'

我正在尝试连接到 Web 应用程序项目的 RDS 实例。我收到此错误:

ValueError: invalid literal for int() with base 10: 'PORT'

追溯:

.conda/envs/src/lib/python3.6/site-packages/sqlalchemy/engine/
url.py", line 60, in __init__

这是我的 RDS 请求的格式

DATABASE_URL: mysql+pymysql://USER:PASSWORD@HOST:PORT/DBNAME

我在终端中运行这个:

export DATABASE_URL=mysql+pymysql://USER:PASSWORD@HOST:PORT/DBNAME
export HOST=myhost
export USER=myuser
export PASSWORD=mypassword
export DBNAME=mydbname
export PORT=3306

python create_db.py

所以我的 PORT 读取不正确,我也不知道为什么。我所做的所有研究都表明这个问题去年已在 Oracle 中修复,但我使用的是 MySQL.

这是我的 create_db.py 和 schema.py 的 RDS

#  create_db.py
from schema import db
if __name__=='__main__':
# create a new table scheme as defined in the schema script
db.create_all()

# schema.py
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import os

class Config(object):
"""using the global variable saving in command line"""
SECRET_KEY = os.environ.get('SECRET_KEY') or 'secret-key'
SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL')
SQLALCHEMY_TRACK_MODIFICATIONS = False

application = Flask(__name__)
application.config.from_object(Config)
db = SQLAlchemy(application)

class Patient(db.Model):
    __tablename__ = 'Patient'

    id = db.Column(db.Integer, primary_key=True,autoincrement=True)
    ...
def __repr__(self):
    return '<User %r'> % self.id

您在环境变量中的连接字符串完全无效 - 它不会被您另外添加的值替换。将其更改为:

export DATABASE_URL=mysql+pymysql://myuser:mypassword@myhost:3306/mydbname

并将值替换为真实值。最终结果或多或少应该是这样的:

export DATABASE_URL=mysql+pymysql://test_user:test_password@localhost:3306/testdb