解决python3向数据库插入日期字符串报错的问题

[Err] 22007 - [SQL Server]从字符串转换日期和/或时间时,转换失败。

  插入的日期字符串(日期字符串是从文件中读取的,将文件中的数据转存到关系型数据库中):

‘2017/04/10‘
字符串看着没问题,我用len(str)查看长度,发现长度为11,多出了一个字符长度。

复制到notepad++查看,更改字符串编码:编码为:UTF-8-BOM时看到字符串中多出了一个“?”

看到这个应该知道是什么原因导致的了,所以就有了解决办法。由日期字符串可以看出,其中只包含了数据和‘/‘这两种字符,我想到了用正则表达式来处理,把数字和‘/‘以外的字符全部去除。
re.sub(‘[^0-9 | \/]‘, ‘‘, str)

  

re.sub()是python3中re模块下的一个替换字符串的函数(替换掉满足正则表达式的内容,不满足的保持不变)。第一个参数是匹配的正则表达式;第二个参数是要替换的目标字符;第三个参数是需要处理的字符串。

 经过对字符串的处理,日期字符串就变得正常了,再次插入的话就不会报错了。

谨记那些年入过的坑!

原文地址:https://www.cnblogs.com/yin1361866686/p/10141607.html

时间: 2024-08-03 08:04:27

解决python3向数据库插入日期字符串报错的问题的相关文章

解决mysql插入中文字符报错的问题ERROR 1366 (HY000): Incorrect string value: ‘\xE5\xB0\x8F\xE6\x98\x8E‘ for column ‘name‘ at row 1

原文:解决mysql插入中文字符报错的问题ERROR 1366 (HY000): Incorrect string value: '\xE5\xB0\x8F\xE6\x98\x8E' for column 'name' at row 1 报错内容: mysql> insert into person values (1,22,'小明');ERROR 1366 (HY000): Incorrect string value: '\xE5\xB0\x8F\xE6\x98\x8E' for colum

ORA-01843的错误 插入日期数据时报错

当我在SQLPLUS执行 : INSERT INTO customers ( customer_id, first_name, last_name, dob, phone ) VALUES ( 5, 'Doreen', 'Blue', '20-MAY-1970', NULL ); 出现 "ORA-01843: 无效的月份 "这个错误. Google之后找到下面的这篇文章,其中说先执行alter session set nls_date_language='american'  然后再执

ESL python调用C模块时传递unicode字符串报错问题解决

在是用freeswitch时利用ESL的python调用时传递字符串报错 TypeError: in method 'ESLconnection_api', argument 2 of type 'char const *' 是由于python传递的字符串为unicode,在c语言char使用的ascii码方式在SWIG中做一下转换,代码如下 修改文件esl_wrap.cpp ##### /* for C or C++ function pointers *///添加定义#define SWIG

解决delphi 在sqlite插入日期变成1899-12-30日问题。

产生原因的win7系统的短日期格式“yyyy/m/d”,在给sqlit中的日期格式字段插入当前日期时用DateTimeToStr(Now)函数, 该值有时候会在sqlite表中会有时候变成1899-12-30.要解决该问题要在主form的Create事件中设置程序的时间格式,还要设置 Application.UpdateFormatSettings := False;使程序不受系统时间格式影响. Application.UpdateFormatSettings := False; // 设定程序

python 字符串报错问题

http://jingyan.baidu.com/article/25648fc1a96dd49191fd00c0.html 解决'ascii' codec can't encode character 在python2.7下,将字符串写入到文件时会出现"UnicodeEncodeError: 'ascii' codec can't encode character u'\xa0' in position"的错误,原因是由于python基于ASCII处理字符的,当出现不属于ASCII的

iOS解析JSON字符串报错Error Domain=NSCocoaErrorDomain Code=3840 "Invalid escape sequence around character 586."

将服务器返回的JSON string转化成字典时报错: Error Domain=NSCocoaErrorDomain Code=3840 "Invalid escape sequence around character 586." 仔细查找后在原来解析的基础上将"\"字符替换成""或"\\"后,解析成功.具体的解析代码如下: - (NSDictionary *)parseJsonStringToNSDictionary:(

sscanf_s读取字符串报错的问题分析

1 if (!fgets(line, 512, fin)) 2 { 3 break; 4 } 5 6 char tCh[256] = {0}; 7 sscanf_s(line, "%[^,],%lf,%lf,%lf,%lf,%lf,%lf\n", tCh, 256, &ax, &ay, &az, &gx, &gy, &gz); 如上所示,使用sscanf_s解析line字符串,先读取行首的字符串,需要在字符串之后指定所能容纳的字符串大小,

怎么在数据库表里面自动插入日期字段

1引言 你点击了桌面上的Chrome图标,一个浏览器窗口出现了,输入网址就可以在Internet世界愉快玩耍.这一切是怎么实现的呢?Chromium这个多进程的程序是如何启动各个进程的呢?浏览器主进程(界面进程)启动了哪些线程?如何启动的呢?这些问题一直萦绕在心头,一起来看看源代码吧.本文主要针对Chromium for Mac的源代码,其它操作系统大同小异. 2背景知识 浏览器作为一个应用程序,是以进程的形式运行在操作系统上的.首先,Chromium是一个多进程的应用程序,我们需要了解Chro

数据库插入四字节字符报错Incorrect string value: ‘\xF0\xA3\x8E\

数据库插入四字节字符报错Incorrect string value: '\xF0\xA3\x8E\xB4\xE9\xAB.. 改变字符编码utf8mb4貌似很二 直接找到四字节那个字符改成正常的字符貌似有点简单粗暴(俺就是这么干的!O(∩_∩)O哈哈~). 大家怎么看?