【问题标题】:Python SQLAlchemy pyodbc.Error: ('HY000', 'The driver did not supply an error!')Python SQLAlchemy pyodbc.Error: ('HY000', '驱动程序没有提供错误!')
【发布时间】:2018-11-14 06:06:35
【问题描述】:

大家好,我现在正在使用 Pandas 和 MSSQL。我一直工作正常,但最近在 SQlalchemy 更新后,当我尝试通过 df.to_sql 将信息上传到数据库时出现以下错误

pyodbc.Error: ('HY000', '驱动程序没有提供错误!')

我的连接定义如下

engine = create_engine('mssql+pyodbc://Reporter:******@localhost:1433/SourcingDb?driver=SQL+Server')

df.to_sql('ProductivityDeck', con=engine, if_exists='replace', index= False)

我得到的完整错误是这个

Traceback (most recent call last):

文件“C:\Python\Python36\lib\site-packages\sqlalchemy\engine\base.py”,第 1182 行,在 _execute_context 语境) 文件“C:\Python\Python36\lib\site-packages\sqlalchemy\engine\default.py”,第 470 行,在 do_execute cursor.execute(语句,参数) pyodbc.Error: ('HY000', '驱动程序没有提供错误!')

上述异常是以下异常的直接原因:

Traceback (most recent call last):
  File "C:/Users/H212310/PycharmProjects/untitled2/UpdateCEDeckv2.py", line 23, in <module>
    df.to_sql('ProductivityDeck', con=engine, if_exists='replace', index= False)
  File "C:\Python\Python36\lib\site-packages\pandas\core\generic.py", line 2127, in to_sql
    dtype=dtype)
  File "C:\Python\Python36\lib\site-packages\pandas\io\sql.py", line 450, in to_sql
    chunksize=chunksize, dtype=dtype)
  File "C:\Python\Python36\lib\site-packages\pandas\io\sql.py", line 1149, in to_sql
    table.insert(chunksize)
  File "C:\Python\Python36\lib\site-packages\pandas\io\sql.py", line 663, in insert
    self._execute_insert(conn, keys, chunk_iter)
  File "C:\Python\Python36\lib\site-packages\pandas\io\sql.py", line 638, in _execute_insert
    conn.execute(*self.insert_statement(data, conn))
  File "C:\Python\Python36\lib\site-packages\sqlalchemy\engine\base.py", line 945, in execute
    return meth(self, multiparams, params)
  File "C:\Python\Python36\lib\site-packages\sqlalchemy\sql\elements.py", line 263, in _execute_on_connection
    return connection._execute_clauseelement(self, multiparams, params)
  File "C:\Python\Python36\lib\site-packages\sqlalchemy\engine\base.py", line 1053, in _execute_clauseelement
    compiled_sql, distilled_params
  File "C:\Python\Python36\lib\site-packages\sqlalchemy\engine\base.py", line 1189, in _execute_context
    context)
  File "C:\Python\Python36\lib\site-packages\sqlalchemy\engine\base.py", line 1402, in _handle_dbapi_exception
    exc_info
  File "C:\Python\Python36\lib\site-packages\sqlalchemy\util\compat.py", line 203, in raise_from_cause
    reraise(type(exception), exception, tb=exc_tb, cause=cause)
  File "C:\Python\Python36\lib\site-packages\sqlalchemy\util\compat.py", line 186, in reraise
    raise value.with_traceback(tb)
  File "C:\Python\Python36\lib\site-packages\sqlalchemy\engine\base.py", line 1182, in _execute_context  context)
  File "C:\Python\Python36\lib\site-packages\sqlalchemy\engine\default.py", line 470, in do_execute
    cursor.execute(statement, parameters)

我尝试回滚到较低版本的 SqlAlchemy,更新 windows 中的 ODBC 驱动程序并升级 python 安装,但它一直在返回。

关于如何解决此问题的任何想法?

【问题讨论】:

  • 请显示您的数据框的内容及其dtypes
  • 我可以,但它得到了任何 1000+ 行的 df,甚至是用 rnd 生成的。只是走得更远,发现这是 Pandas 中的一个错误,而不是正在解决的 SqlAlchemy 中的错误。非常感谢您的关注!
  • 您解决过这个问题吗?有同样的错误,却一无所获!
  • 是pandas版本,试试降级看看能不能用

标签: python sql-server pandas sqlalchemy pyodbc


【解决方案1】:

好的,这是“对于 pandas 23 中的一个已知错误的静默错误,降级到 v22 会使错误消失,您可以上传 1000 多行。

这个正在解决中

https://github.com/pandas-dev/pandas/issues/21103

【讨论】:

    【解决方案2】:

    我遇到了同样的错误('HY000','驱动程序没有提供错误!')。一些 StackOverflow 线程上的现有解决方案没有帮助。

    就我而言,错误来自pyodbc.connect()

    我最终重新安装了 python 和依赖项,问题就消失了。

    【讨论】:

      【解决方案3】:
      pyodbc.connect('Driver={ODBC Driver 17 for SQL Server};')
      

      只需更换驱动程序对我有用!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-06-12
        • 2014-07-13
        • 2018-03-05
        • 1970-01-01
        • 1970-01-01
        • 2017-01-22
        相关资源
        最近更新 更多