pandas 如何使用Python工具(SQLAlchemy、cx_Oracle等)访问Oracle DB中其他用户的对象(表)?

twh00eeo  于 2023-04-19  发布在  Python
关注(0)|答案(2)|浏览(195)

我已经读取了其他用户的表。我如何将它们读入pandas dataframe或使用Python工具下载为*.csv

zwghvu4y

zwghvu4y1#

sqlalchemy中,表模式由MetaData对象管理。要从现有数据库加载模式,可以使用MetaData.reflect()方法,该方法可以接受一个可选参数schema,该参数用于从其他用户加载模式。https://docs.sqlalchemy.org/en/20/core/metadata.html#sqlalchemy.schema.MetaData.reflect
要将其作为pandas DataFrame加载,可以使用read_sql_query()方法。https://pandas.pydata.org/docs/reference/api/pandas.read_sql_query.html

import pandas as pd
import sqlalchemy as sa

engine = sa.create_engine("oracle+cx_oracle://user:pwd@host:port/dbname")
meta = sa.Metadata()
meta.reflect(bind=engine, schema="otheruser")
table = sa.Table("otheruser.table", meta, autoload_with=engine)
df = pd.read_sql_query(table.select(), engine)
df.to_csv("file.csv")
pjngdqdw

pjngdqdw2#

您需要安装cx_oracle和SQLAlchemy。

import cx_Oracle
import sqlalchemy as sa
import pandas as pd

engine = sa.create_engine ('oracle+cx_oracle://user:pwd@host:port/dbname')
connection = engine.connect()
df = pd.read_sql("select * from otheruser.table", connection)
df.head()
df.to_csv("file.csv")

相关问题