Python Pandas有to_sql和read_sql方法,可用于与数据库通信。
我正在连接到Postgres数据库。 熊猫似乎使用SQL Alchemy and psycopg2来进行沟通。
使用create_engine('mysql+mysqlconnector://user:password@amazon_endpoint:port/database_name',connect_args={'sslmode':'require'}, echo=True)
时收到AttributeError: Unsupported argument 'sslmode'
错误。
然后,我看到以下帖子:1,2并将代码修改为create_engine('mysql+mysqlconnector://user:password@amazon_endpoint:port/database_name?ssl_ca=/home/user/Downloads/rds-combined-ca-bundle.pem')
。连接现在可以工作,我可以连接到数据库。这是否意味着连接现在是安全的?有没有办法可以证实这一点?
答案 0 :(得分:0)
默认情况下,我认为连接不安全,除非您的Postgres实例已配置为需要安全连接。首先,您的实例需要使用SSL支持构建,然后告诉客户端安全连接是一件简单的事情。来自the documentation:
PostgreSQL本身支持使用SSL连接加密客户端/服务器通信以提高安全性。这要求在客户端和服务器系统上都安装OpenSSL,并且在构建时启用PostgreSQL中的支持(参见第15章)。
通过编译SSL支持,可以通过在postgresql.conf中将参数ssl设置为on来启用PostgreSQL服务器。服务器将在同一TCP端口上侦听正常连接和SSL连接,并将与任何连接客户端协商是否使用SSL。默认情况下,这是客户的选择;请参阅第19.1节,了解如何将服务器设置为要求对某些或所有连接使用SSL。
使用to_sql
或read_sql
时,将其传递给使用sslmode=require
设置的SQLAlchemy连接。 This question提供了设置连接的完整代码段:
db = create_engine(
'postgresql+pg8000://user:pass@hostname/dbname',
connect_args={'sslmode':'require'},
echo=True
).connect()