Python执行Oracle SQL查询报错TypeError:期望字符串或字节对象
解决TypeError: expecting string or bytes object问题
嘿,我来帮你搞定这个报错~ 问题出在你读取SQL文件的方式上:
你用了f.readlines(),这个方法返回的是一个字符串列表(文件里每一行对应列表里的一个元素),但pd.read_sql()的sql参数要求传入的是单个字符串或者字节对象,所以才会触发这个类型错误。
修正方案
把读取文件的代码改成用f.read(),它会直接返回整个SQL文件的完整字符串内容,刚好符合pd.read_sql()的要求:
import pandas as pd import cx_Oracle from sys import exit conn= cx_Oracle.connect('DOMINA/S#U@ex021-orc.corp.mycompany.com:1540/domp_domi_bi') # 修正:用read()读取完整字符串 with open(r'C:\Users\Au321103\.spyder-py3\Validation\DOMINA_query.sql') as f: query = f.read() # 导入到DataFrame try: df = pd.read_sql(con = conn, sql = query) finally: conn.close() df.head() exit()
额外小提示
如果你的SQL文件里有多余的空行或者注释,read()也能正常处理,pandas会自动忽略这些不影响SQL执行的内容。要是你之后遇到SQL语法错误,可以先把query打印出来看看,确认读取到的内容和你预期的SQL语句一致~
内容的提问来源于stack exchange,提问作者user2100039
相关产品推荐
相关产品推荐

