我正在尝试连接到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
答案 0 :(得分:3)
环境变量中的连接字符串完全无效 - 它不会被您另外添加的值替换。将其更改为:
export DATABASE_URL=mysql+pymysql://myuser:mypassword@myhost:3306/mydbname
用真实的值代替值。最终结果应该或多或少看起来像这样:
export DATABASE_URL=mysql+pymysql://test_user:test_password@localhost:3306/testdb