python - 尝试使用 sqlalchemy 插入 pandas 时出现错误 fetchall

标签 python sql-server pandas sqlalchemy

我试图将 pandas 插入到具有 chunksize 的 SQL Server 表中,但出现此错误。

错误

Traceback (most recent call last): File "C:\Users\neyma\PycharmProjects\pythonProject23\main.py", line 95, in for row in conn.fetchall(): AttributeError: 'Connection' object has no attribute '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)

最佳答案

您的错误似乎在于使用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)

编辑: 与 SQLAlchemy >2.0 版本一起使用的版本是

with engine.begin() as conn:
    result = conn.exec_driver_sql("SELECT * FROM test").all()

感谢Gord Thompson要在评论中突出显示这一点,以及 SQLAlchemy 部分的更多详细信息,请参阅 here .

关于python - 尝试使用 sqlalchemy 插入 pandas 时出现错误 fetchall,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73022700/

相关文章:

Python - 寻找a^3+b^3=c^3的整数解

python - 使用 matplotlib 方向错误的 FITS 文件绘制的图像

sql - 选项(重新编译)总是更快;为什么?

node.js - NodeJS Azure Sequelize SQL Server - 错误 : Please install tedious package manually

sql-server - 使用一对多 JOIN 进行更新(多列)

python - python装饰器修饰的函数返回值是否只能是Nonetype

javascript - 如何动态生成 Blockly 下拉菜单的内容?

python - 优化矩阵遍历/通用代码优化

python - 字典到数据帧错误: "If using all scalar values, you must pass an index"

Python+Pandas+Dataframe+CSV : Code removes all rows from a dataframe instead of specified ones