【问题标题】:ERROR: No results. Previous SQL was not a query错误:没有结果。以前的 SQL 不是查询
【发布时间】:2022-01-18 15:31:55
【问题描述】:
cnxn = pyodbc.connect(driver="{ODBC Driver 17 for SQL Server}", server="xxx", database="yy", user="abc", password="abc")
cursor = cnxn.cursor()

b = alter table temp1 add column3 varchar(10)
cursor.execute(b)
cursor.fetchall()

从上面的代码中,我试图更改表并添加列,因为我包含 2 个表 1 是现有表,另一个是新表 新表中的列要添加到现有表中,所以我已经完成了代码,但我得到了错误

错误:没有结果。以前的 SQL 不是查询。

所以请帮我清除这个错误。

【问题讨论】:

  • b = "alter table temp1 add column3 varchar(10)" ? (使用引号)。
  • 你为什么在这里使用fetchall?您不能从不返回结果集的查询中获取结果集...

标签: python sql sql-server


【解决方案1】:

将代码行改为如下

b = 'alter table temp1 add column3 varchar(10);'

这会将整个 SQL 命令作为字符串分配给变量 b,然后您可以在调用游标的 execute() 函数时使用它。 另外,ALTER TABLESQL 语句不会返回任何结果集,所以执行后不需要调用fetchXX() 方法。

【讨论】:

  • 它已成功执行,但新列 dint 被添加到现有表 @Anand Sowmithiran
  • 你也应该调用cnxn.commit(),那么只有这样的DDL更改才会被持久化到数据库中。
  • 另外,您可以通过将 Connection 对象的 autocommit 属性设置为 true 来启用自动提交。
猜你喜欢
  • 2013-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-12
  • 1970-01-01
  • 2021-02-28
相关资源
最近更新 更多