我在执行数据库/表创建时遇到了问题。我刚刚开始在这个领域学习,所以我有很多知识差距。我有这样的代码:
import sqlite3
import csv
connection = sqlite3.connect("sqlite.db")
cursor = connection.cursor()
table = (" CREATE TABLE NR_CELLS (\n"
" site_name TEXT\n"
" cell_name TEXT\n"
" physical_cell_id INTEGER\n"
" NCI INTEGER\n"
" downlink_narfcn INTEGER\n"
" downlink_bandwidth INTEGER\n"
" max_transmit_power INTEGER\n"
" ")
cursor.execute(table)
with open("dane_wejsciowe.txt", "rt") as csv_file:
csv_reader = csv.reader(csv_file, delimiter="\t")
objects = []
MeContextId_lst = []
userLabel_lst = []
nRPCI_lst = []
nCI_lst = []
arfcnDL_lst = []
bSChannelBwDL_lst = []
maxTransmissionPower_lst = []
for row in csv_reader:
if row:
if row[0].startswith("FDN"):
objects.append((row[0].split()[2:][0]))
if row:
if row[0].startswith("MeContextId"):
MeContextId_lst.append(row[0].split()[2:][0])
if row:
if row[0].startswith("userLabel"):
userLabel_lst.append(row[0].split()[2:][0])
if row:
if row[0].startswith("nRPCI"):
nRPCI_lst.append(row[0].split()[2:][0][1:3])
if row:
if row[0].startswith("nCI"):
nCI_lst.append(row[0].split()[2:][0][1:3])
if row:
if row[0].startswith("arfcnDL"):
arfcnDL_lst.append(row[0].split()[2:][0][1:3])
if row:
if row[0].startswith("bSChannelBwDL"):
bSChannelBwDL_lst.append(row[0].split()[2:][0][1:3])
if row:
if row[0].startswith("maxTransmissionPower"):
maxTransmissionPower_lst.append(row[0].split()[2:][0][1:3])
rows = []
for o, u, n, nc, ar, bs, max in zip(objects, userLabel_lst, nRPCI_lst, nCI_lst, arfcnDL_lst, bSChannelBwDL_lst, maxTransmissionPower_lst):
row = tuple((o, u, n, nc, ar, bs, max))
rows.append(row)
cursor.execute("INSERT INTO sqlite Values (?, ?, ?, ?, ?, ?, ?", rows)
print("Command executed successfully...")
connection.commit()
connection.close()
我只需要像上面这样的表创建简单的数据库,但是我有如下错误:
sqlite3.操作错误:不完全输入
我做错了什么?错误到底在哪里?
发布于 2022-04-09 06:43:29
修正后的代码:
import sqlite3
import csv
connection = sqlite3.connect("sqlite.db")
cursor = connection.cursor()
table = """ CREATE TABLE NR_CELLS (
site_name TEXT,
cell_name TEXT,
physical_cell_id INTEGER,
NCI INTEGER,
downlink_narfcn INTEGER,
downlink_bandwidth INTEGER,
max_transmit_power INTEGER
"""
cursor.execute(table)
with open("dane_wejsciowe.txt", "rt") as csv_file:
csv_reader = csv.reader(csv_file, delimiter="\t")
objects = []
MeContextId_lst = []
userLabel_lst = []
nRPCI_lst = []
nCI_lst = []
arfcnDL_lst = []
bSChannelBwDL_lst = []
maxTransmissionPower_lst = []
for row in csv_reader:
if row:
continue
if row[0].startswith("FDN"):
objects.append((row[0].split()[2:][0]))
if row[0].startswith("MeContextId"):
MeContextId_lst.append(row[0].split()[2:][0])
if row[0].startswith("userLabel"):
userLabel_lst.append(row[0].split()[2:][0])
if row[0].startswith("nRPCI"):
nRPCI_lst.append(row[0].split()[2:][0][1:3])
if row[0].startswith("nCI"):
nCI_lst.append(row[0].split()[2:][0][1:3])
if row[0].startswith("arfcnDL"):
arfcnDL_lst.append(row[0].split()[2:][0][1:3])
if row[0].startswith("bSChannelBwDL"):
bSChannelBwDL_lst.append(row[0].split()[2:][0][1:3])
if row[0].startswith("maxTransmissionPower"):
maxTransmissionPower_lst.append(row[0].split()[2:][0][1:3])
rows = []
for ob, me, us, nr, nc, ar, bs, max in zip(objects, MeContextId_lst, userLabel_lst, nRPCI_lst, nCI_lst,
arfcnDL_lst, bSChannelBwDL_lst, maxTransmissionPower_lst):
row = tuple(ob, me, us, nr, nc, ar, bs, max)
rows.append(row)
pint(rows)
cursor.executemany("INSERT INTO sqlite Values (?, ?, ?, ?, ?, ?, ?, ?)", rows)
print("Command executed successfully...")
connection.commit()
connection.close()
我的输入文件(其中一部分):
FDN : "SubNetwork=ONRM_P4,SubNetwork=POZRAN,MeContext=34_WRO1190A_1_DWORSKA"
MeContextId : "34_WRO1190A_1_DWORSKA"
neType : RadioNode
platformType : <empty>
FDN : "SubNetwork=ONRM_P4,SubNetwork=POZRAN,MeContext=34_WRO1190A_1_DWORSKA,ManagedElement=34_WRO1190A_1_DWORSKA"
dnPrefix : "SubNetwork=ONRM_P4,SubNetwork=POZRAN,MeContext=34_WRO1190A_1_DWORSKA"
locationName : <empty>
logicalName : <empty>
managedElementId : "34_WRO1190A_1_DWORSKA"
managedElementType : "RadioNode"
managedElementTypeList : ["Bts", "ENodeB", "EquipmentSupport", "Fgw", "GNBCUCP", "GNBCUUP", "GNBDU", "Mce", "NodeB"]
neType : RadioNode
networkManagedElementId : "34_WRO1190A_1_DWORSKA"
platformType : <empty>
release : "21.Qx"
siteLocation : <empty>
swVersion : "21.Qx"
userDefinedState : <empty>
userLabel : <empty>
vendorName : "Gruchot"
FDN : "SubNetwork=ONRM_P4,SubNetwork=POZRAN,MeContext=34_WRO1190A_1_DWORSKA,ManagedElement=34_WRO1190A_1_DWORSKA,GNBDUFunction=1,UeCC=1"
ueCCId : "1"
错误是:
cursor.execute(table)
sqlite3.OperationalError: incomplete input
https://stackoverflow.com/questions/71805641
复制相似问题