簡體   English   中英

pyodbc insert 語句收到錯誤消息

[英]pyodbc insert statement gets error message

我正在嘗試使用 python 將值插入 SQL SERVER。 我寫了我的 python 程序如下。

import pyodbc
import subprocess
cnx = pyodbc.connect("DSN=myDSN;UID=myUID;PWD=myPassword;port=1433")
runcmd1 = subprocess.check_output(["usbrh", "-t"])[0:5]
runcmd2 = subprocess.check_output(["usbrh", "-h"])[0:5]
cursor = cnx.cursor()
cursor.execute("SELECT * FROM T_TABLE-A;")
cursor.execute('''
                INSERT INTO T_TABLE-A (TEMP,RH,DATE,COMPNAME)
                VALUES
                (runcmd1,runcmd2,GETDATE(),'TEST_Py')
                ''')
cnx.commit()

然后得到如下錯誤。

# python inserttest.py
Traceback (most recent call last):
  File "inserttest.py", line 13, in <module>
    ''')
pyodbc.ProgrammingError: ('42S22', "[42S22] [FreeTDS][SQL Server]Invalid column name 'runcmd1'. (207) (SQLExecDirectW)")

如果我像下面這樣寫,可以插入。

import pyodbc
cnx = pyodbc.connect("DSN=myDSN;UID=myUID;PWD=myPassword;port=1433")
cursor = cnx.cursor()
cursor.execute("SELECT * FROM T_TABLE-A;")
cursor.execute('''
                INSERT INTO T_TABLE-A (TEMP,RH,DATE,COMPNAME)
                VALUES
                (20.54,56.20,GETDATE(),'TEST_P')
                ''')
cnx.commit()

命令 USBRH -t 獲取溫度,USBRH -h 獲取濕度。 它們在單獨的 python 程序中運行良好。 有誰知道解決這個錯誤? 提前非常感謝。

檢查從這兩行返回的數據類型

runcmd1 = subprocess.check_output(["usbrh", "-t"])[0:5]
runcmd2 = subprocess.check_output(["usbrh", "-h"])[0:5]

runcmd1runcmd2應該是 'double' 數據類型,因為它接受20.54

cursor.execute('''
                INSERT INTO T_TABLE-A (TEMP,RH,DATE,COMPNAME)
                VALUES
                (runcmd1,runcmd2,GETDATE(),'TEST_Py')
                ''')

將不起作用,因為您嵌入的是 Python 變量的名稱,而不是它們的 你需要做

sql = """\
INSERT INTO T_TABLE-A (TEMP,RH,DATE,COMPNAME)
VALUES
(?, ?, GETDATE(),'TEST_Py')
"""
cursor.execute(sql, runcmd1, runcmd2)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM