python从csv文件中读取数据到数据库
各位大佬好,本人在使用python将csv文件读取到sqlite3数据库中已经建好的表的时候,出现了这个错误:sqlite3.OperationalError: near "to": syntax error,想询问是什么原因,随贴截取部分csv文件的信息如下
Time Source Destination Protocol Length Source Port Destination Port Info
0 192.168.1.20 192.168.1.50 TCP 60 56790 44818 56790>44818 Seq=1 Ack=1 Win=7922 Len=0
0 192.168.1.50 192.168.1.40 CIP 116 44818 55872 Success: Service (0x4c)
0.000135 192.168.1.40 192.168.1.50 TCP 60 55872 44818 55872>44818 Seq=1 Ack=63 Win=8130 Len=0
0.000186 192.168.1.20 192.168.1.30 CIP 116 56784 44818 'HMI_LIT301' - Service (0x4c)
0.000291 192.168.1.20 192.168.1.30 CIP 116 56784 44818 'HMI_FIT301' - Service (0x4c)
0.000291 192.168.1.30 192.168.1.20 TCP 60 44818 56784 44818>56784 Seq=1 Ack=63 Win=8130 Len=0
0.000292 192.168.1.20 192.168.1.30 CIP 116 56784 44818 'HMI_MV301' - Service (0x4c)
0.000396 192.168.1.30 192.168.1.20 TCP 60 44818 56784 44818>56784 Seq=1 Ack=125 Win=8068 Len=0
0.000396 192.168.1.60 192.168.1.20 CIP I/O 86 Connection: ID=0x00F7464A, SEQ=0042190992
0.000396 192.168.1.30 192.168.1.20 TCP 60 44818 56784 44818>56784 Seq=1 Ack=187 Win=8006 Len=0
0.000584 192.168.1.20 192.168.1.30 CIP 110 44818 56706 Success: Service (0x4c)
0.000667 192.168.1.30 192.168.1.20 TCP 60 56706 44818 56706>44818 Seq=1 Ack=57 Win=8136 Len=0
0.00123 192.168.1.10 192.168.1.60 CIP 128 64520 44818 'HMI_PLANT_AUTO' - Service (0x4d)
0.001341 192.168.1.60 192.168.1.10 TCP 60 44818 64520 44818>64520 Seq=1 Ack=75 Win=8118 Len=0
0.001342 192.168.1.10 192.168.1.20 CIP 124 64512 44818 'HMI_P2_PERMISSIVE' - Service (0x4c)
0.001434 192.168.1.10 239.192.2.63 CIP I/O 98 Connection: ID=0x00708000, SEQ=0008698356
以下是我的代码
import sqlite3
import csv
#数据库连接,建表
conn = sqlite3.connect('networkInfo.db')
cs = conn.cursor()
# cs.execute('''create table netInfo(
# Time,
# Source text,
# Destination text,
# Protocol text,
# Length integer,
# Source_Port text,
# Destination_port text,
# Info text
# )''')
with open('netInfo.csv') as f:
reader = csv.reader(f)
for row in reader:
#跳过第一行表头部分
if row == 'Source':
continue
#print(row)
cs.execute(f'insert to netInfo values("{row}","{row}","{row}","{row}","{row}","{row}","{row}","{row}")')
conn.commit()
conn.close()
不是insert into吗
楼上正解吧,插入 SQL 语句写错了 是 insert into ,你写成了 to
wp231957 发表于 2022-4-29 09:15
不是insert into吗
修改为into以后会报这个错sqlite3.OperationalError: near "QM": syntax error,我在csv文件中查找出那一项是Standard query 0x0000 PTR _ipps._tcp.local, "QM" question PTR _ipp._tcp.local, "QM" question,好像是数据本身有双引号的问题,不知道如何修改
Twilight6 发表于 2022-4-29 10:29
楼上正解吧,插入 SQL 语句写错了 是 insert into ,你写成了 to
修改为into以后会报这个错sqlite3.OperationalError: near "QM": syntax error,我在csv文件中查找出那一项是Standard query 0x0000 PTR _ipps._tcp.local, "QM" question PTR _ipp._tcp.local, "QM" question,好像是数据本身有双引号的问题,不知道如何修改 496339041 发表于 2022-4-29 14:28
修改为into以后会报这个错sqlite3.OperationalError: near "QM": syntax error,我在csv文件中查找出那一 ...
除非你把excel或者csv发出来 本帖最后由 Twilight6 于 2022-4-29 14:51 编辑
496339041 发表于 2022-4-29 14:28
修改为into以后会报这个错sqlite3.OperationalError: near "QM": syntax error,我在csv文件中查找出那一 ...
会不会是你 insert 引号加多了,试试这样,把第 1 列和第 4 列引号去了?
f'insert to netInfo values({row},"{row}","{row}",{row},"{row}","{row}","{row}","{row}")'
Twilight6 发表于 2022-4-29 14:42
会不会是你 insert 引号加多了,试试这样,把第 1 列和第 4 列引号去了?
我草,ok了大佬,非常感谢! Twilight6 发表于 2022-4-29 14:42
会不会是你 insert 引号加多了,试试这样,把第 1 列和第 4 列引号去了?
看错了大佬,还是会报类似的错误sqlite3.OperationalError: near "to": syntax error 496339041 发表于 2022-4-29 15:16
看错了大佬,还是会报类似的错误sqlite3.OperationalError: near "to": syntax error
哈哈我拷贝你的代码,忘记把 to 改成 into 了
f'insert into netInfo values({row},"{row}","{row}",{row},"{row}","{row}","{row}","{row}")' wp231957 发表于 2022-4-29 14:30
除非你把excel或者csv发出来
大佬,我不知道怎么把那个csv文件发上来,想转pdf然后发链接但是那个文件太大了 Twilight6 发表于 2022-4-29 15:18
哈哈我拷贝你的代码,忘记把 to 改成 into 了
有进展了大佬,报了新的错误sqlite3.OperationalError: no such column: TCP Twilight6 发表于 2022-4-29 14:42
会不会是你 insert 引号加多了,试试这样,把第 1 列和第 4 列引号去了?
是要去掉第一列未指定类型的time和第五列整形的length的双引号吗,这俩是row0和row4 496339041 发表于 2022-4-29 15:22
有进展了大佬,报了新的错误sqlite3.OperationalError: no such column: TCP
好吧,这好像是因为不加引号引起的,没怎么用过 Python 连接数据库抱歉哈,最后试试这个看看:
f"insert into netInfo values('{row}','{row}','{row}','{row}','{row}','{row}','{row}','{row}')"
Twilight6 发表于 2022-4-29 15:28
好吧,这好像是因为不加引号引起的,没怎么用过 Python 连接数据库抱歉哈,最后试试这个看看:
不行,但是非常谢谢大佬了{:5_96:} 496339041 发表于 2022-4-29 15:20
大佬,我不知道怎么把那个csv文件发上来,想转pdf然后发链接但是那个文件太大了
如果你实在搞不定,可以把部分文件记录打包rar
发出来,大家帮你研究 wp231957 发表于 2022-4-29 15:35
如果你实在搞不定,可以把部分文件记录打包rar
发出来,大家帮你研究
稍等大佬,我在研究怎么把这个zip传上来 wp231957 发表于 2022-4-29 15:35
如果你实在搞不定,可以把部分文件记录打包rar
发出来,大家帮你研究
链接:https://pan.baidu.com/s/1DUcbFuh--f7-aplt8577FQ
提取码:vmo1
--来自百度网盘超级会员V4的分享 wp231957 发表于 2022-4-29 15:35
如果你实在搞不定,可以把部分文件记录打包rar
发出来,大家帮你研究
已经解决了大佬,用?当占位符就好了
页:
[1]