当前位置: 首页 > 面试题库 >

MSSQL2008-Pyodbc-先前的SQL不是查询

林浩漫
2023-03-14
问题内容

我无法弄清楚下面的代码出了什么问题,语法正常(已通过SQL Management
Studio检查),我具有应有的访问权限,因此也可以使用..但是由于某种原因,当我尝试创建表时通过PyODBC然后停止工作。

import pyodbc

def SQL(QUERY, target = '...', DB = '...'):
    cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=' + target + DB+';UID=user;PWD=pass')
    cursor = cnxn.cursor()
    cursor.execute(QUERY)
    cpn = []

    for row in cursor:
        cpn.append(row)
    return cpn

print SQL("CREATE TABLE dbo.Approvals (ID SMALLINT NOT NULL IDENTITY PRIMARY KEY, HostName char(120));")

它失败并显示:

Traceback (most recent call last):
  File "test_sql.py", line 25, in <module>
    print SQL("CREATE TABLE dbo.Approvals (ID SMALLINT NOT NULL IDENTITY PRIMARY KEY, HostName char(120));")
  File "test_sql.py", line 20, in SQL
    for row in cursor:
pyodbc.ProgrammingError: No results.  Previous SQL was not a query.

有人知道为什么会这样吗?我安装了“ SQL Server”驱动程序(默认),并且在Windows 2008 SQL
Server环境(不是快速数据库)上运行Windows 7。


问题答案:

以防万一某个孤独的游牧民族遇到此问题,Torxed的解决方案对我不起作用。但是以下对我有用。

我正在调用一个SP,它将一些值插入表中,然后返回一些数据。只需将以下内容添加到SP中:

SET NOCOUNT ON

会很好的:)

Python代码:

    query = "exec dbo.get_process_id " + str(provider_id) + ", 0"
    cursor.execute(query)

    row = cursor.fetchone()
    process_id = row[0]

SP:

USE [DBNAME]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[GET_PROCESS_ID](
    @PROVIDER_ID INT,
    @PROCESS_ID INT OUTPUT
)
AS
BEGIN
    SET NOCOUNT ON
    INSERT INTO processes(provider_id) values(@PROVIDER_ID)
    SET @PROCESS_ID= SCOPE_IDENTITY()
    SELECT @PROCESS_ID AS PROCESS_ID
END


 类似资料:
  • 问题内容: 有没有一种方法可以告诉MS SQL查询不是太重要,它可以(并且应该)花费时间? 同样,有没有办法告诉MS SQL它应该赋予查询更高的优先级? 问题答案: 在低于SQL 2008的版本中不存在。在SQL Server 2008中,有资源调控器。使用该功能,您可以根据登录名的属性(登录名,应用程序名等)将登录名分配给组。然后可以将组分配给资源池,并且可以将资源所受的限制或限制应用于这些资源

  • 问题内容: 我在应该是一个非常简单的脚本方面遇到了麻烦。我只是想使用Python pyodbc模块创建一个新的SQL Server数据库。当我在SQL Server2012中执行该参数时,我尝试传递的“ sqlcommand”参数完美运行,但是此python脚本失败了。不知道出了什么问题,有人有什么想法吗? 和错误: 问题答案: 是SQL Server ManagementStudio中的批处理终

  • 问题内容: 我在Python中使用以下代码(对于MS-Access,使用pyodbc)。 可以,但是出于维护目的,我需要知道发送到数据库的完整且确切的SQL字符串。 有可能吗? 问题答案: 答案是不。我在项目的本地Google代码(以及Google论坛)上发布了我的问题,答案是: l … @ deller.id.au对问题163的评论#1:cursor.mogrify返回查询字符串 http://

  • 问题内容: 我的数据组织如下: 我试图从单个Invoice_Id(K =父级,C =子级)中,从Kit_Flag为’K’的最后一行获取后续行的Part_Number值。为了简单起见,我在这里只列出了一个发票ID。 因此,对于以上数据,结果将如下所示: 在Excel中,可以通过“ = If(C2 =“ K”,C3,D2)”之类的方法来实现,而这实际上是我们暂时必须解决的问题,但是我正在尝试实现这一点

  • 我试图使用pyodbc连接到Azure SQL数据库,但收到错误: Pyodbc.InterfaceError:('28000','[28000][Microsoft][SQL Server的ODBC驱动程序17][SQL Server]用户'adminc'登录失败。(18456)(SQLDriverConnect);[28000][Microsoft][SQL Server的ODBC驱动程序17

  • 下面是回溯。我已经读了所有其他的SO线程,在谷歌上搜索了两个多小时,但无法弄明白这一点。以下是我尝试过的: > 连接字符串的SQL身份验证和Windows身份验证版本。 使用SQL Server名称(文本)和服务器的IP地址 包括和不包括端口1443(SQL server的默认TCP/IP端口) 在Windows防火墙中创建新规则以允许端口1443处的入站/出站TCP 列表项 回溯(最近一次调用)