可以使用带有中间临时表的pd.read_sql吗?

时间:2019-09-11 19:50:45

标签: sql-server pandas

我在python中有一些SQL任务,可能需要创建中间临时表。

是否有可能实现以下目标?

sql_command = \
    f"""
        select top 100 * into #tmp123 from  mydb;
        select top 2 * from  #tmp123
    """
import pyodbc
cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=' + "myservername") 
table_spec_ret_sql = pd.read_sql(sql_command,cnxn)

此当前实现给我一个错误提示

  

'NoneType'对象不可迭代

1 个答案:

答案 0 :(得分:1)

SET NOCOUNT ON添加到您的批次中。

sql_command = \
        f"""
            set nocount on;
            select top 100 * into #tmp123 from  mydb;
            select top 2 * from  #tmp123
        """
    import pyodbc
    cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=' + "myservername") 
    table_spec_ret_sql = pd.read_sql(sql_command,cnxn)

第一条语句的行计数消息位于结果集之前,并且客户端驱动程序需要在结果集可用之前使用它。有些驱动程序会自动执行此操作,有些则不会。