【问题标题】:trying to insert pandas with alchemy got error fetchall试图用炼金术插入熊猫得到错误 fetchall
【发布时间】:2022-07-19 01:44:36
【问题描述】:

我试图将 pandas 插入带有 chunksize 的 sql server 表中,但我收到了这个错误,如果代码不好,我很抱歉,我对 sqlalchemy 不好

错误

Traceback(最近一次调用最后一次): 文件“C:\Users\neyma\PycharmProjects\pythonProject23\main.py”,第 95 行,在 对于 conn.fetchall() 中的行: AttributeError: 'Connection' 对象没有属性 'fetchall'

这是我的代码

 connection_url = URL.create(
        "mssql+pyodbc",
        query={"odbc_connect": connection_string}
    )
    engine = create_engine(connection_url)
    engine = create_engine(connection_url)
    conn = engine.connect().execution_options(
        stream_results=True)
    
    
    
    with open("ss.xml") as fp:
        soup = BeautifulSoup(fp, 'xml')
    data = []
    
            'DSName': e.text if (e := Event.select_one(('Data[Name="DSName"]'))) else None,
            'DSType': e.text if (e := Event.select_one(('Data[Name="DSType"]'))) else None,
            'ObjectDN': e.text if (e := Event.select_one(('Data[Name="ObjectDN"]'))) else None,
            'ObjectGUID': e.text if (e := Event.select_one(('Data[Name="ObjectGUID"]'))) else None,
            'ObjectClass': e.text if (e := Event.select_one(('Data[Name="ObjectClass"]'))) else None,
            'AttributeLDAPDisplayName': e.text if (e := Event.select_one(('Data[Name="AttributeLDAPDisplayName"]'))) else None,
            'AttributeSyntaxOID': e.text if (e := Event.select_one(('Data[Name="AttributeSyntaxOID"]'))) else None,
            'AttributeValue': e.text if (e := Event.select_one(('Data[Name="AttributeValue"]'))) else None,
            'OperationType': e.text if (e := Event.select_one(('Data[Name="OperationType"]'))) else None,
    
    
        })
    
    df = pd.DataFrame(data);
    engine.execute('''
    
                                CREATE TABLE try(
                                    DSName nvarchar(max),
                                    DSType nvarchar(max),
                                    ObjectDN nvarchar(max),
                                    ObjectGUID nvarchar (max),
                                    AttributeLDAPDisplayName nvarchar(max),
                                    AttributeSyntaxOID nvarchar(max),
                                    AttributeValue nvarchar(max),
                                    OperationType nvarchar(max),
                                    )
                                       ''')
    df.to_sql('try', conn, if_exists='replace', index = False,chunksize=100)
    engine.execute('''  
    SELECT * FROM test
              ''')
    
    for row in conn.fetchall():
        print (row)

【问题讨论】:

    标签: python sql-server pandas sqlalchemy


    【解决方案1】:

    您的错误似乎在于使用fetchall()。正如错误告诉您conn 对象不支持fetchall() 一样,这是真的。包含/支持此功能的查询结果如here所示。

    将最后一个循环改为

    result = engine.execute('''  
    SELECT * FROM test
              ''')
    
     for row in result.fetchall():
            print (row)
    

    你也可以试试:

    for row in engine.execute('''SELECT * FROM test''').fetchall()
        print(row)
    

    【讨论】:

      猜你喜欢
      • 2021-12-11
      • 2016-06-21
      • 1970-01-01
      • 2014-04-21
      • 2016-10-02
      • 2016-09-27
      • 1970-01-01
      • 2014-10-12
      • 1970-01-01
      相关资源
      最近更新 更多