Разница между boto3.client и pymysql.connect

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

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

Для 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)

Для pymysql мне нужно 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) и вторым (с использованием pymysql)? Должна быть какая-то разница, потому что я предоставляю два разных типа информации для связи.

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


person shuyu liu    schedule 29.03.2020    source источник


Ответы (2)


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

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

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

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

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

person Marcin    schedule 29.03.2020

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

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

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


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

person OneCricketeer    schedule 29.03.2020