FAQ > 金融建模 > 第三方交互 > Python

Q:python中通过pandas的read_sql方法以ODBC方式连接天软服务器时出现异常警告    

  • 问题描述
     使用pandas的read_sql方法连接天软时出现异常提示:UserWarning: pandas only support SQLAlchemy connectable(engine/connection) ordatabase string URI or sqlite3 DBAPI2 connectionother DBAPI2 objects are not tested, please consider using SQLAlchemy
     warnings.warn(
    参考范例
    python代码:
    from sqlalchemy import create_engine
    import pandas as pd
    import pyodbc
    conn=pyodbc.connect("dsn=tsodbc")
    sql='''
      return rand(3,3);
    '''
    data= pd.read_sql(sql,conn)
    print(data)

    代码结果:出现异常警告

    问题分析
    python新版本对pandas访问数据库的接口发生了变更
    pandas对 read_sql 的第二个参数的官方说明如下:

    即,目前这个函数支持SQLAlchemy支持的关系型数据库 以及sqlite3,天软提供的数据库服务不属于关系型数据库无法被SQLAlchemy支持也不能通过sqlite3进行支持
    解决办法
     只能通过源生方式进行交互,再转pandas的格式
    参考:FAQ:2016-07-28-应用专题-第三方交互:对ODBC接口的使用方法和范例
    实现范例
    python代码:
    import pandas as pd
    import pyodbc
    conn=pyodbc.connect("dsn=tsodbc")
    curs=conn.cursor()
    sql='''
      return rand(3,3);
    '''
    curs.execute(sql)
    rows=curs.fetchall()
    curs.close()
    conn.close()
    df=pd.DataFrame(rows)
    print(df)

    代码结果: