Python 从cx\U Oracle默认数据类型设置正确的pandas.DataFrame数据类型
我有一些带有下一个字段数据类型的oracle表:Python 从cx\U Oracle默认数据类型设置正确的pandas.DataFrame数据类型,python,pandas,oracle,cx-oracle,Python,Pandas,Oracle,Cx Oracle,我有一些带有下一个字段数据类型的oracle表: ID| NOT NULL NUMBER VERSION| NOT NULL NUMBER STAT_ACTUAL| NOT NULL NUMBER REGION| NOT NULL VARCHAR2(5 CHAR) PARENTID| NUMBER
ID| NOT NULL NUMBER
VERSION| NOT NULL NUMBER
STAT_ACTUAL| NOT NULL NUMBER
REGION| NOT NULL VARCHAR2(5 CHAR)
PARENTID| NUMBER
CITY| VARCHAR2(5 CHAR)
...
如果我试图将它们从cx_Oracle添加到pandas.DataFrame,就像这样:
import pandas as pd
from sqlalchemy import *
conn = cx_Oracle.connect('datbs/datbs@host/serv')
cursorr = conn.cursor()
SQL = "select * from table where region = 1"
df= pd.read_sql_query(SQL, con=conn)
数据类型如下所示:
ID int64
VERSION int64
STAT_ACTUAL int64
REGION object
PARENTID int64
CITY object
...
因此,我所有的oracle varchar2(在cx_oracle中看起来是('REGION',
)都是pandas.df中的对象
我试图通过以下方式转换它们:
def OutConverter(value):
if value is None:
return ''
return value
def VarToStr(cursor, name, defaultType, size, precision, scale):
if defaultType in (cx_Oracle.STRING, cx_Oracle.OBJECT):
return cursor.var(str, size, cursorr.arraysize, outconverter=OutConverter)
conn.outputtypehandler = VarToStr
但结果还没有得到…df.dtypes再次显示对象类型
如何将oracle和cx_oracle数据类型映射到pandas df?我使用了不正确列的手动转换,如:
newdf = df.astype({"REGION": "Int64", ..., "CITY": "Int32", ...})
输出:
REGION int64
CITY Int32