【发布时间】:2019-09-26 18:46:12
【问题描述】:
假设我有以下文件.csv
DATE Name Email
26-Sep-19 Name1 Name1@email.com
26-Sep-19 Name2 Name2@email.com
26-Sep-19 Name3 Name3@email.com
我正在尝试将 file.csv 中的值插入到表中
import cx_Oracle
import csv
import os
from datetime import datetime
con = cx_Oracle.connect(uname, pwd, hostname + ': ' + port + '/' + service)
cursor = con.cursor()
with open('file.csv', 'r') as csv_file:
csv_reader = csv.reader(csv_file, delimiter=',')
for lines in csv_reader:
cursor.execute( "INSERT INTO table1 ( DATE,Name,Email) values (:1, :2, :3)",
(lines[0],lines[1],lines[2])
cursor.close()
con.commit()
con.close()
我收到此错误:
(lines[0],lines[1],lines[2]) cx_Oracle.DatabaseError: ORA-01858: a 在需要数字的地方发现了非数字字符
经过一些调试,我能够将问题归结为日期问题,所以我用硬编码的日期代替了行 [0],它起作用了!
cursor.execute( "INSERT INTO table1 ( DATE,Name,Email) values (:1, :2, :3)",
('26-Sep-19',lines[1],lines[2])
为什么它不能与 lines[0] 变量一起使用,但使用硬编码的值却可以正常工作?
【问题讨论】:
-
lines[0]的值和'26-Sep-19'的格式一样吗? -
@blhsing 是的
标签: python-2.6 cx-oracle