Python加载数据入库SqlServer报错问题总结(持续更新,欢迎补充)

前言

博主开始实习了,公司要求转Python,此博客用于记录我入库所遇到的问题,欢迎大家补充解决方法和遇到其他问题!!!(评论区留言,我会加在博客里)

问题总结

问题1

报错内容

(156, b"Incorrect syntax near the keyword 'group'.DB-Lib error message 20018, severity 15:\nGeneral SQL Server error: Check messages from the SQL Server\n")

我的代码

# 插入sql语句
sql = "insert into test4 (name,group) values (%s,%s)"
#执行插入操作
cursor.executemany(sql,dict)
db.commit()

报错原因:自定义字段名与数据库中的默认字段冲突,keyword ‘group’

解决办法:更改数据库列名(例如改为 “groups”)和 代码更改为groups

问题2

报错内容(数据框中的列数与SQL Server表中的列数列名相同,仍然出现以下错误):

more placeholders in sql than params available
#翻译:sql中的占位符多于可用的参数,错误原因少加了一些参数导致数据无法存入数据库

我的代码

# 插入sql语句
sql = "insert into test4 (name,groups) values (%s,%s)"
#执行插入操作
cursor.executemany(sql,dict)
db.commit()

报错原因:dict列表的数据格式有问题

解决方法:executemany(sql,dict)方法的模板字符串的参数,是一个列表,列表中的每一个元素必须是元组!!! 例如: [(1,‘小明’),(2,‘zeke’),(3,‘琦琦’)] 或 [(1,‘小明’,2,‘zeke’,3,‘琦琦’)]

问题3

报错内容

executemany() takes exactly 2 positional arguments (3 given)
#翻译:executemany()只接受2个位置参数(给定3个)

报错原因:executemany()只接受2个位置参数(而我给3个)

解决方法:参数只给两个(如果两个参数都必须要,先存入一个列表在传参)

问题4

报错内容

the JSON object must be str, bytes or bytearray, not NoneType
#翻译:JSON对象必须是str、bytes或bytearray,而不是NoneType

报错原因:JSON对象必须是str、bytes或bytearray,而不是NoneType

解决方法:现在是一个字典,只需要用’’'符号将它转换成字符串就可以了

问题5

我的代码

select TOP 100000 FROM [IPRCloud].[dbo].[TM_AP]

报错内容

pymssql._pymssql.OperationalError: (156, b"Incorrect syntax near the keyword 'FROM'.DB-Lib error message 20018, severity 15:\nGeneral SQL Server error: Check messages from the SQL Server\n")

报错原因:‘From’ 附近的代码有问题

解决方法:不小心写掉了一个 * 号,一定要仔细!!!

select TOP 100000 * FROM [IPRCloud].[dbo].[TM_AP]

问题6

报错内容

pymssql._pymssql.OperationalError: (8152, b'String or binary data would be truncated.DB-Lib error message 20018, severity 16:\nGeneral SQL Server error: Check messages from the SQL Server\n')

报错原因:引发此错误,则有一个或多个字段的长度不足以容纳要插入的数据,还包括TRIGGER中变量。

解决方法

  • 1.数据库中各字段长度设置;
  • 2.相应表单设置的触发器;
  • 3.打开即将插入的数据,查看异常长的数据以供参考
  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
商品入库管理系统(Inventory Management System,IMS)是一个用于跟踪和管理商品从采购、入库到存储的全过程的软件应用。这个系统的代码通常会包含以下几个关键模块: 1. **用户界面**:用于管理员和员工登录,查看库存状态、录入新订单或商品信息。 2. **订单处理**:包括接收订单信息,如供应商、商品编码、数量等,并进行入库操作。 3. **入库管理**:记录商品的入库流程,包括批次追踪、检验、验收、条形码扫描或RFID读取等。 4. **库存控制**:实时更新库存量,支持过期品管理和预警。 5. **数据记录与报告**:生成各种报表,如入库报告、库存报表、销售分析等。 6. **权限管理**:确保只有授权人员才能访问特定功能,比如财务人员查看库存成本,采购人员下单等。 7. **数据库操作**:使用SQL或其他数据库技术存储和检索数据。 要编写这样一个系统的代码,可能涉及到的技术栈有:Java、Python(如Django或Flask)、C#(ASP.NET)、PHP(Laravel)等后端语言,以及HTML、CSS、JavaScript等前端技术。使用框架如Spring Boot、Django ORM、MyBatis等可以帮助简化开发。数据库可以选择MySQL、Oracle、SQL Server等。 由于这是一个复杂的系统,实际代码不会在这里展示。如果你对某个部分的具体实现有兴趣,例如数据库设计、API接口设计或者某一模块的详细代码示例,我可以为你提供指导,但完整的源代码通常是保密的商业项目。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

袁袁袁袁满

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值