Python+SQLite3:利用内置的sqlite3模块转换数据库里的日期格式

2022-10-11 21:17:00 123 0
魁首哥

最近大量从原来的 MySQL 数据库导出数据,再往 SQLite 数据库里导入数据,使用 Navicat 导出导入挺趁手,却没发现,导入了大量格式为【月/日/年】的日期,跟原先导入的格式为【年-月-日】的日期混在一起。

懒得删数据、重新导出导入了,同时也是为了练习一下用 Python 的 sqlite3 操纵数据库,所以就写了几行脚本,几经测试后,成功统一了日期格式。

直接上代码:

利用Python的sqlite3转换日期格式

 import sqlite3, os, datetime

os.chdir(r"D:\drkPython\SQL\SQLite3")
cwd = os.getcwd()

con = sqlite3.connect('DB/opeu.db')
con.execute('PRAGMA foreign_keys = ON')
cur = con.cursor()

sql = """SELECT uid, bday FROM usr
	WHERE source = 'IAHR'
	AND bday IS NOT NULL"""
cur.execute(sql)
data = cur.fetchall()

for row in data:
	bday_old = row[1]
	bday_new = datetime.datetime.strptime(bday_old, "%m/%d/%Y")
	bday_new = datetime.datetime.strftime(bday_new, "%Y-%m-%d")
	print(bday_new)
	cur.execute("""UPDATE usr SET bday = ?
		WHERE uid = ?""", (bday_new, row[0]))
	con.commit()
con.close()  

代码思路

大致的思路是:找出所有需要转换格式的数据列,利用 datetime.datetime.strptime() 函数将格式为【月/日/年】的字符串转换为时间戳,然后再用 datetime.datetime.strftime() 函数将标准时间戳转换为【yyyy-mm-dd】的字符串,然后用 UPDATE 语句修改数据。

一个一个转换,总共1万条数据,操作了半天,应该是这个方法太笨了,但好歹解决问题了。不知道用 cur.executemany() 能不能改善性能,只能等日后再研究研究了。

收藏
分享
海报
0 条评论
123
上一篇:Java和PHP在网站服务器端性能对比测试 下一篇:php开发之循环遍历数组方式

本站已关闭游客评论,请登录或者注册后再评论吧~

忘记密码?

图形验证码