首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从pyodbc切换到pymssql后参数化查询的语法错误

从pyodbc切换到pymssql后参数化查询的语法错误
EN

Stack Overflow用户
提问于 2017-07-19 13:17:54
回答 1查看 1.1K关注 0票数 0

我有13-15 DB的原始文件将其数据加载到DB中,使用pyodbc的executemany在30k-35k行附近插入需要50到55分钟的,它工作良好,但处理时间很长。

为了测试性能,我尝试了pymssql,但是这里显示了语法错误。

代码语言:javascript
运行
复制
x = [('a',1),('b',2).... ]  # inserting only 999 rows at a time
qry = "INSERT INTO ["+tablename+"] VALUES({}) ".format(placeholders)
cursor.executemany(qry,x)

print qry
 # INSERT INTO [my_T] VALUES(?,?,?,?,?,?,?,?,?,?,?,?...) 

在executemany()时,它将错误作为

错误:

loadData中的错误(102,“语法不正确”?). Server错误消息20018,严重性15:\n通用Server错误:检查来自Server的消息\n“

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-21 23:03:33

Python的DB-API2.0规范定义了实现人员可以使用的几个参数样式

pyodbc采用了"qmark“样式,这是ODBC最常见的样式。

代码语言:javascript
运行
复制
INSERT INTO tablename (col1, col2) VALUES (?, ?)

而pymssql选择了“格式”样式。

代码语言:javascript
运行
复制
INSERT INTO tablename (col1, col2) VALUES (%s, %s)

请注意,由于历史原因,pymssql支持%d%s,但我们不需要使用%s来表示字符串,%d用于数字;%s在所有情况下都有效,是首选占位符。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45191832

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档