python - 使用 qmark 样式参数时解决 SQL 类型名称错误?

标签 python sql parameterized adodbapi

我正在尝试通过 adodbapi 包使用 ADO 连接进行以下参数化 SQL 查询,我得到了

Type name is invalid

我无法解决的数据库错误。

cursor.execute("SELECT * FROM ?", ["Compound"])

这会导致以下错误:

DatabaseError: (-2147352567, 'Exception occurred.', (0, 'Microsoft SQL Server Compact OLE DB Provider', 'Type name is invalid.', None, 0, -2147217872), None)
Command:
SELECT * FROM ?
Parameters:
[Name: p0, Dir.: Input, Type: adBSTR, Size: 8, Value: "Compound", Precision: 0, NumericScale: 0]

我假设类型名称无效。类型:adBSTR是消息的关键组成部分,但我无法找到有关此数据类型的信息,除了它是以 null 结尾的 unicode 字符串。

我尝试过不同的字符串编码,例如

[r"Compound"]
[b"Compound"]
[u"Compound"] 

查询对于普通字符串可以正常工作:

cursor.execute("SELECT * FROM Compound")

这实际上是由于参数类型还是 qmark paramstyle 实现所致?

最佳答案

表名(以及列名)无法在 Sql 中参数化。参数旨在传递数据值。

关于python - 使用 qmark 样式参数时解决 SQL 类型名称错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57117557/

相关文章:

python - 如何使用 pandas Dataframe 在子图直方图中设置多个平均值

SQL 获取所有超过 30 天的记录

java - JUNIT参数错误: Wrong number of arguments

java - 在 JUnit 测试用例中使用不同的数据子集测试不同的方法

.net - 制作基于网络的 2 人文本游戏

python - 根据另一列的函数在一列中查找值

python - 自定义中间件类引发错误

java - 如何将 JPA 与随机数据库(即用户提交的)一起使用

php - 从一个表中获取所有数据,有时将该表与另一个表相关联

sql-server - SQL Server 查询计划差异