【问题标题】:Python Connect to AWS Aurora Serverless MySQL Using SQLAlchemyPython 使用 SQLAlchemy 连接到 AWS Aurora Serverless MySQL
【发布时间】:2019-10-17 22:07:10
【问题描述】:

有没有办法在没有 Secrets Manager ARN 的情况下指定我与 SQLAlchemy 到 AWS RDS Aurora Serverless MySQL 数据库实例的连接?我有数据库用户名、密码、端点、ARN 等,理想情况下我会初始化一个引擎,然后使用 df.to_sql() 将 DataFrame 加载到 Aurora 实例上的表中。

...
else:
   engine = create_engine([WHAT DO I SPECIFY HERE?])
   with engine.connect() as conn:
      df.to_sql([CODE TO APPEND TO EXISTING TABLE HERE])...

【问题讨论】:

  • 您是否在 aws secrets manager 中创建了一个包含数据库用户名、密码等的密码?
  • 是的!还有一个秘密 ARN。

标签: python sqlalchemy aws-secrets-manager pandas-to-sql aws-aurora-serverless


【解决方案1】:

来自 Alchemy 文档 - https://docs.sqlalchemy.org/en/13/dialects/mysql.html,这是连接字符串的外观 - create_engine 中的参数 - 对于 MySQL

mysql+pymysql://<username>:<password>@<host>/<dbname>[?<options>]

【讨论】:

  • 感谢您的回复——在 AWS RDS Aurora Serverless MySQL 实例的上下文中,这看起来如何? = 数据库实例用户名, = 数据库实例密码, = 数据库实例端点?有哪些选项?为什么我在前缀中需要pymysql?
  • 我认为你需要 pymysql 因为 sqlalchemy 是 Python SQL 工具包,而 pymysql 是 python mysql 客户端
【解决方案2】:

我不知道你是否可以在没有秘密 ARN 的情况下连接到 Aurora,但如果你愿意使用,你可以安装这样的驱动程序:https://github.com/koxudaxi/py-data-api

这将允许您执行以下操作:

def example_driver_for_sqlalchemy():
    from sqlalchemy.engine import create_engine
    engine = create_engine(
        'mysql+pydataapi://',
        connect_args={
            'resource_arn': 'arn:aws:rds:us-east-1:123456789012:cluster:dummy',
            'secret_arn': 'arn:aws:secretsmanager:us-east-1:123456789012:secret:dummy',
            'database': 'test'
        }
    )
    result: ResultProxy = engine.execute("select * from pets")
    print(result.fetchall())

【讨论】:

    猜你喜欢
    • 2019-03-20
    • 2021-02-05
    • 1970-01-01
    • 1970-01-01
    • 2019-04-05
    • 1970-01-01
    • 2019-10-16
    • 2018-03-01
    • 1970-01-01
    相关资源
    最近更新 更多