Разница между boto3.client и py mysql .connect - PullRequest
0 голосов
/ 29 марта 2020

Я новичок в использовании AWS -RDS- mysql, теперь у меня проблема при подключении этой базы данных

Здесь у меня есть два способа подключения к моей AWS -RDS- mysql, один должен использовать пакет 'boto3', а другой - пакет 'py mysql'.

Для boto3 требуются четыре параметра:

1) type='rds', 
2) region,
3) aws_access_key_id
4) aws_secret_access_key

Функция Я использую это:

boto3.client(type, region, aws_access_key_id=key_id, aws_secret_access_key=access_key)

Для py mysql мне нужно 5 параметров, это:

1) host = "databaseinstancename.cxxxxxxxxxx.ca-central-1.rds.amazonaws.com"
2) port = 3306
3) dbname = "xxx"
4) user = "admin"
5) password = "ssssss"

Метод, который я использую:

pymysql.connect(host, user=user, port=port, passwd=password, db=dbname)

Все они могут успешно подключиться к базе данных из моего pycharm.

Мой вопрос

1) В чем разница между первым методом (используя boto3) и вторым (используя py *)? 1030 *)? Должна быть какая-то разница, потому что я предоставляю два разных типа информации для подключения.

2) Когда я использую jupyter notebook в AWS sagemaker для редактирования кода python3, чтобы попытаться подключиться к базе данных, я найти только первый метод (с использованием boto3) может работать, второй метод (с использованием py mysql) не может успешно подключиться с ошибкой, говорящей, что «тайм-аут». Почему это происходит, когда один метод может быть доступен для базы данных, но другой не работает?

Ответы [ 2 ]

0 голосов
/ 29 марта 2020

boto3 - это , в частности и AWS библиотека. Он будет использовать ваши AWS учетные данные для доступа и AWS API для поиска информации о предоставленных вами параметрах.

За кулисами вполне может использоваться более стандартная библиотека, такая как pymysql или sqlalchemy или другие, для подключения к некоторому экземпляру RDS. (Хотя я вижу, что вы не указали ни одного экземпляра RDS в регионе, поэтому трудно узнать, действительно ли вы подключились к чему-либо, вместо того, чтобы просто создать BotoClient экземпляр)

Тайм-ауты могут просто из-за того, что вы вводите неверные учетные данные или сеть не настроена для соединения между этими средами.


Другими словами - разница в том, что pymsql будет работать для любой MySQL базы данных

0 голосов
/ 29 марта 2020

1) В чем разница между первым методом (с использованием boto3) и вторым (с использованием py mysql)? Должна быть какая-то разница, потому что я предоставляю два разных типа информации для подключения.

  • boto3 используется для управления вашими экземплярами БД в службе RDS. Вы используете, например, для создания своего экземпляра mysql db с репликами чтения, настройки групп безопасности для экземпляра db, включения доступа publi c и многого другого.

  • pymysql используется для фактического подключения к вашей базе данных mysql, добавления данных к ней, выбора данных из нее и т. д. c.

2) Когда я использую jupyter notebook в AWS sagemaker для редактирования кода python3, чтобы попытаться подключиться к базе данных, я нахожу только первый способ (использование boto3 ) может сработать, второй метод (использующий py mysql) не может успешно соединиться с ошибкой, указывающей, что «time out». Почему это происходит, когда один метод может быть доступен для базы данных, но другой не работает?

pymysql истекло время ожидания, так как, вероятно, вы не настроили группу безопасности для своего экземпляра данных БД и / или не включили публичный c доступ.

...