mysql,oracle
SQLAlchemy, pymysql, cx_Oracle,
直接用 cx_Oracle创建的连接引擎,使用 pd.read_sql时,会产生 warning,如下
"UserWarning: pandas only support SQLAlchemy connectable(engine/connection) ordatabase string URI or sqlite3 DBAPI2 connectionother DBAPI2 objects are not tested, please consider using SQLAlchemy";
此 warning 可以忽略, 执行的是 SQLiteDatabase.read_query();
使用 SQLAlchemy create_engine 创建连接引擎,连接Oracle 数据库时,执行的是 SQLDatabase.read_query(),
sql中输入的列名会变成小写;在 sql.py文件1560,1561行
1560 result = self.execute(*args)
1561 columns = result.keys()
columns 变成 列名小写列表
此时,要还原列明, 需要用 df = df.rename(columns=lambda x: x.upper())
示例:
# 'oracle+cx_oracle://' + user + ':' + pw + '@' + host + ':' + port + '/?service_name=' + db
create_engine("oracle+cx_oracle://user:passwd@host:port/db")
create_engine("mssql+pymssql://user:passwd@host:port/db")
https://docs.sqlalchemy.org/en/14/core/connections.html#sqlalchemy.engine.CursorResult