【问题标题】:SystemError: <class 'pyodbc.Error'> returned a result with an error setSystemError: <class 'pyodbc.Error'> 返回带有错误集的结果
【发布时间】:2020-01-02 12:39:21
【问题描述】:
def insert(self):
    conn = pyodbc.connect(
        'Driver={SQL Server};'
        'Server=DESKTOP-S0VG212\SQLEXPRESS;'
        'Database=MovieGuide;'
        'Trusted_Connection=yes;'
    )
    cursor = conn.cursor()

执行查询时发生错误,但我不知道是什么原因造成的。

cursor.execute('insert into Movies(MovieName,Genre,Rating,Username) values(?,?,?,?);',
               (self.moviename, self.moviegenre, self.ratebox, self.username))
conn.commit()

【问题讨论】:

  • 你能提供所有的错误信息吗?
  • 文件“C:/Users/Dell/PycharmProjects/untitled/gui.py”,第 47 行,插入 cursor.execute('INSERT INTO Movies(MovieName,Genre,Rating,Username) VALUES( ?,?,?,?);', SystemError: 返回了带有错误集的结果
  • 谢谢。我认为 (?,?,?,?);很奇怪, (self. .... ) 的一部分应该在 '.所以, cursor.execute('insert ...... username) ; ' ) 将起作用。
  • @shimo 我不能只在查询中写变量名吗? ,这会将变量名保存在数据库中,而不是存储在变量中的值
  • 您找到解决方案了吗? @AbubakarSoomro

标签: python sql-server pyodbc


【解决方案1】:

我知道我的回答迟了,但它可能对某人有用。

SystemError: &lt;class 'pyodbc.Error'&gt; returned a result with an error set 错误出现在查询错误时,请确保您使用 SQL Server 查询窗口执行正确的查询,然后才能识别问题。

在问题中,分号不应该出现在查询的末尾,如果仍然出现错误,则该列可能存在一些约束问题。因此,当您遇到此问题时,请遵循以下方法。

在 SQL Server 查询选项卡中执行一个插入查询并确定 问题。

【讨论】:

  • 即使查询完全有效,我也会收到此错误,但是当我执行 'CREATE TABLE' 查询而不删除现有表时,表已经存在。这个异常没有像我预期的那样包含ORA-00955,它后来导致UnicodeDecodeError,这让我在调试时花了几个小时。
【解决方案2】:

将 SQL Server 与对 Oracle 服务器的 Openquery 一起使用我收到此错误,因为我的 Oracle SQL 中有注释。

SET NOCOUNT ON;
If(OBJECT_ID('tempdb..#Temp_OracelTable') Is Not Null)
Begin
    Drop Table #Temp_OracleTable
    End


SELECT *
    INTO #Temp_OracleTable
    FROM    OPENQUERY (OracelConnectionNameOnSQLServer, '
Select Column -- Comment I had to remove
From TableName')
Select * From #Temp_OracleTable
Drop table #Temp_OracleTable

【讨论】:

    猜你喜欢
    • 2019-05-16
    • 2019-06-13
    • 2017-09-24
    • 1970-01-01
    • 2020-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多