我正在使用pypyodbc连接到我的SQL2014服务器,我有以下查询要执行。但是,它给出了我的错误消息:
pypyodbc.ProgrammingError:(u'42S22',u“[42S22] [Microsoft] [SQL Server Native Client 11.0] [SQL Server]列名'2017-02-07'无效。“)
我可以在服务器上运行我的SQL查询而没有任何问题。 我想知道包含长sql语句并执行它的正确方法是什么?
Python代码:
result = cursor.execute('''
declare @date date ="2017-02-07",
@env varchar (10)= "TEST",
@runid int,
@val smallint,
@timelen int,
@interface varchar(30),
@table_t varchar(30),
@del_t int,
@upd_t int,
@ins_t int
declare @import_test TABLE
(RUN_DATE date,
ENV varchar(10),
ID int,
[CHECK] varchar (100),
CODE varchar(30),
TABLE_NAME varchar(30),
VAL_1 int,
VAL_2 int,
VAL_3 int )
set @val=(select count(*) from MY_TABLE where convert(date,[timestamp])=@date and msg_cd="OK")
insert into @import_test values (@date,@env,null,"Check 1 (count of OK codes)",null,null,@val,null,null)
select * from @import_test
''')
for row in result:
print(row)
答案 0 :(得分:0)
在MSSQL中,双引号括起来的字符串被解释为列名。您需要在SQL查询中使用双引号作为Python多行字符串和环绕字符串,并带有单引号。
尝试:
result = cursor.execute("""
declare @date date ='2017-02-07',
@env varchar (10)= 'TEST',
@runid int,
@val smallint,
@timelen int,
@interface varchar(30),
@table_t varchar(30),
@del_t int,
@upd_t int,
@ins_t int
...
""")