我在一个EC2实例Centos7上。使用Python 3.9.10。通过安装以下库sqlalchemy
、pandas
、pymysql
激活Virtualenv。
所以这很好用:
import os
import pymysql
dw = {
"host": os.environ.get("DW_HOST"),
"database": os.environ.get("DW_DATABASE"),
"user": os.environ.get("DW_USER"),
"password": os.environ.get("DW_PASS"),
}
conn = pymysql.connect(**dw)
with conn.cursor() as cur:
cur.execute("SELECT * FROM table LIMIT 10")
data = cur.fetchall()
for row in data:
print(row)
这并不是,我也不知道为什么(在本地工作,):
import sqlalchemy
import pandas as pd
import os
dw = {
"host": os.environ.get("DW_HOST"),
"database": os.environ.get("DW_DATABASE"),
"user": os.environ.get("DW_USER"),
"password": os.environ.get("DW_PASS"),
}
engine = sqlalchemy.create_engine(f'mysql+pymysql://{dw["user"]}:{dw["password"]}@{dw["host"]}/{dw["database"]}')
df = pd.read_sql("SELECT * FROM table LIMIT 10", engine)
df
获取错误:
sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (2003, "Can't connect to MySQL server on 'xyz@cluster-abc.region.rds.amazonaws.com' ([Errno -2] Name or service not known)")
(Background on this error at: https://sqlalche.me/e/14/e3q8)
也曾尝试过:
conn_string = f'mysql+pymysql://{dw["user"]}:{dw["password"]}@{dw["host"]}/{dw["database"]}'
df = pd.read_sql("SELECT * FROM table LIMIT 10", conn_string)
也曾尝试过:
将端口号3306
.connect()
方法添加到engine
中的
发布于 2022-06-21 23:46:30
尝试显式地传递端口号。
https://stackoverflow.com/questions/72711460
复制