rsj0315 发表于 2023-7-12 18:04:17

为啥报错呢?

conn = pymssql.connect(host=host, user=user, password=pwd, database=db)
cursor = conn.cursor()

# 插入数据的 SQL 语句
insert_sql = "INSERT INTO BX (Times, TestTime) VALUES (?, ?)"

row =(55, '2023-07-12 14:52:02')

try:
    # 执行 SQL 语句并提交更改
    cursor.execute(insert_sql, row)
    conn.commit()
except pymssql.Error as e:
    print("Error occurred: ", e)
finally:
    # 关闭游标和连接
    cursor.close()
    conn.close()

陶远航 发表于 2023-7-12 18:04:28

根据你提供的代码,报错可能是因为缺少 pymssql 模块或模块未正确导入。请确保你已经正确安装了 pymssql 模块,并在代码开头添加 import pymssql。

另外,请确保你已经正确填写了 host、user、password 和 database 的值,以连接到正确的数据库。

以下是修正后的代码示例:

import pymssql

host = 'your_host'
user = 'your_user'
password = 'your_password'
database = 'your_database'

conn = pymssql.connect(host=host, user=user, password=password, database=database)
cursor = conn.cursor()

# 插入数据的 SQL 语句
insert_sql = "INSERT INTO BX (Times, TestTime) VALUES (?, ?)"
row = (55, '2023-07-12 14:52:02')

try:
    # 执行 SQL 语句并提交更改
    cursor.execute(insert_sql, row)
    conn.commit()
except pymssql.Error as e:
    print("Error occurred: ", e)
finally:
    # 关闭游标和连接
    cursor.close()
    conn.close()


请将 your_host、your_user、your_password 和 your_database 替换为你实际的数据库连接信息。

如果你仍然遇到问题,请提供完整的错误信息,以便我可以更好地帮助你排查问题。

rsj0315 发表于 2023-7-12 18:04:48

报错如下
Error occurred:(102, b"Incorrect syntax near '?'.DB-Lib error message 20018, severity 15:\nGeneral SQL Server error: Check messages from the SQL Server\n")

isdkz 发表于 2023-7-12 18:06:05

rsj0315 发表于 2023-7-12 18:04
报错如下
Error occurred:(102, b"Incorrect syntax near '?'.DB-Lib error message 20018, severity 15 ...

你的问题出在 SQL 查询中的占位符上。在你的插入语句中,你使用了问号 ( ? ) 作为参数的占位符,但在 pymssql 中,这是不正确的。在 pymssql 中,你需要使用%s作为参数的占位符,无论参数的类型是什么。

所以你的插入语句应该是:

insert_sql = "INSERT INTO BX (Times, TestTime) VALUES (%s, %s)"


使用%s作为占位符,pymssql 会自动处理参数的类型转换和转义,从而避免 SQL 注入等问题。这就是为什么我们使用参数化查询,而不是字符串拼接来创建 SQL 查询的原因。
页: [1]
查看完整版本: 为啥报错呢?