对于带有基数为10的int(),文字无效:' PORT'

时间:2018-03-19 08:49:26

标签: python amazon-web-services flask sqlalchemy rds

我正在尝试连接到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。

以下是我的用于RDS的create_db.py和schema.py

#  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

1 个答案:

答案 0 :(得分:3)

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

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

用真实的值代替值。最终结果应该或多或少看起来像这样:

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