首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何处理sqlite3 [sqlite3.OperationalError:不完全输入]的简单问题

如何处理sqlite3 [sqlite3.OperationalError:不完全输入]的简单问题
EN

Stack Overflow用户
提问于 2022-04-09 06:03:21
回答 1查看 89关注 0票数 0

我在执行数据库/表创建时遇到了问题。我刚刚开始在这个领域学习,所以我有很多知识差距。我有这样的代码:

代码语言:javascript
运行
复制
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.操作错误:不完全输入

我做错了什么?错误到底在哪里?

EN

回答 1

Stack Overflow用户

发布于 2022-04-09 06:43:29

修正后的代码:

代码语言:javascript
运行
复制
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()

我的输入文件(其中一部分):

代码语言:javascript
运行
复制
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"

错误是:

代码语言:javascript
运行
复制
cursor.execute(table)
sqlite3.OperationalError: incomplete input
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71805641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档