python - 如何将 SQL Oracle 数据库转换为 Pandas DataFrame?

标签 python sql pandas oracle performance

我正在尝试将 Oracle SQL 数据库导入 python,以便聚合/分析数据。 Pandas 对这项任务非常有用。但是每当我尝试使用我的代码时,它就会挂起并且不会输出任何内容。我不确定是因为我正在使用 cx oracle 包然后使用 pandas 包?

import cx_Oracle as cxo
import pandas as pd 
dsn=cxo.makedsn(
    'host.net',
    '1111',
    service_name='servicename'
)
conn=cxo.connect(
    user='Username',
    password='password',
    dsn=dsn)
c=conn.cursor()
a=c.execute("SELECT * FROM data WHERE date like '%20%'")
conn.close
df=pd.DataFrame(a)
head(df)

但是,当我使用下面的代码时,它会打印出我要查找的数据。我需要将这些数据转换成 Pandas 数据框,

for row in c: print(row)
conn.close()

我是 python 的新手,所以非常感谢任何帮助!!

最佳答案

要将 cx_Oracle 游标转换为数据框,您可以使用以下代码。

with conn.cursor() as cursor:
    cursor.execute("SELECT * FROM data WHERE date like '%20%'")
    from pandas import DataFrame
    df = DataFrame(cursor.fetchall())
    df.columns = [x[0] for x in cursor.description]
    print("I got %d lines " % len(df))

注意我使用游标作为上下文管理器。所以它会在 block 结束时自动关闭。

关于python - 如何将 SQL Oracle 数据库转换为 Pandas DataFrame?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60887128/

相关文章:

python - 在 python 中将 html 表转换为 csv

Python 分区依据

python - 如何抓取 html 中的非文本?

python - 最大的森林(亚马逊面试题)

python - 重命名 pandas 中的某些列

python - Pandas Dataframe 自动缩短字符串?

python - TypeError : byte indices must be integers or slices, 不是 str

sql - 何时使用 Count(PK_ID) 以及何时使用系统表?

sql - 查询where删除在插入新表之前需要条件

sql - 如何正确安排这种模式?