pymssql 问题 - INSERT 不适用于参数

发布于 2024-10-04 17:26:34 字数 840 浏览 3 评论 0原文

我正在 Linux 上使用 pymssql 通过 Python 进行数据库编程。

我在向查询传递参数时遇到问题。这个问题似乎只存在于 INSERT 查询中。

这可行:

query = "SELECT col1, col2 FROM table WHERE col3=%s"
cur.execute(query, (value,))

但这不行:

query = "INSERT INTO table (col1, col2) VALUES (%s, %s)"
cur.execute(query, (value1, value2,))

知道为什么 INSERT 查询不起作用吗?

这是回溯:

Traceback (most recent call last):
  File "test.py", line 46, in ?
    cur.execute(query, (value1, value2,))
  File "/usr/lib/python2.4/site-packages/pymssql.py", line 126, in execute
    self.executemany(operation, (params,))
  File "/usr/lib/python2.4/site-packages/pymssql.py", line 152, in executemany
    raise DatabaseError, "internal error: %s" % self.__source.errmsg()
pymssql.DatabaseError: internal error: None

I'm using pymssql to do database programming with Python on Linux.

I'm having problems with passing parameters to queries. This problem only seems to exist with INSERT queries.

This works:

query = "SELECT col1, col2 FROM table WHERE col3=%s"
cur.execute(query, (value,))

But this doesn't:

query = "INSERT INTO table (col1, col2) VALUES (%s, %s)"
cur.execute(query, (value1, value2,))

Any idea why the INSERT query won't work?

Here is the traceback:

Traceback (most recent call last):
  File "test.py", line 46, in ?
    cur.execute(query, (value1, value2,))
  File "/usr/lib/python2.4/site-packages/pymssql.py", line 126, in execute
    self.executemany(operation, (params,))
  File "/usr/lib/python2.4/site-packages/pymssql.py", line 152, in executemany
    raise DatabaseError, "internal error: %s" % self.__source.errmsg()
pymssql.DatabaseError: internal error: None

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

夜巴黎 2024-10-11 17:26:34

结果我试图插入的值之一是 unicode 类型。当我使用 str(value1) 将其转换为字符串时,查询有效。

Turns out one of the values I was trying to insert was of type unicode. When I converted it to string, using str(value1), the query worked.

自由如风 2024-10-11 17:26:34

这个怎么样:

cur.execute(query % (value1, value2))

How about this:

cur.execute(query % (value1, value2))
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文