【发布时间】:2023-03-21 00:45:02
【问题描述】:
古腾·摩根。
我目前正在尝试从 excel 文件编译 Python3.9 中的数据库。我的想法是,我将有一个我可以更轻松地修改的 excel 文件,然后有一个 python 脚本将其转换为 .db 文件以用于其他脚本。
现在我的第一个主要问题是输入数据类型具有不同数量的输入值。我拥有的最小输入长度是 3(伏特、V、mV)和约 50 的输入(我不会把它扔进去,相信我)。对于数据库的手动输入,我一直使用 '' 作为较短输入的占位符,但必须有更好的方法,对吧?如果有,请告诉我。底部附有基本手动代码,用于 14 长度输入数组,而不是完整的 50 原因,呃。无论如何,提前谢谢!
编辑:我遇到了两个主要问题。第一个(已解决)是转换我的 Excel 文件中长度不一致的输入。第二个是初始化一个可以接受任意长度数据输入的数据库。因此,如果我有 10 行的 excel 输入,每行包含 5 个数据点,或者 80 行的 excel 输入,每行包含 60 个数据点。我希望有一种方法可以初始化数据库,以便我可以轻松接受任何一种情况,而不必硬编码特定数量的输入。
con = sl.connect('793unitDB.db')
try:
with con:
con.execute("""
CREATE TABLE USER (
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
unitName TEXT,
unitType01 TEXT,
unitType02 TEXT,
unitType03 TEXT,
unitType04 TEXT,
unitType05 TEXT,
unitType06 TEXT,
unitType07 TEXT,
unitType08 TEXT,
unitType09 TEXT,
unitType10 TEXT,
unitType11 TEXT,
unitType12 TEXT
);
""")
except:
#print("Failed Initialisation")
pass
sql = 'INSERT INTO USER (id, unitName, unitType01, unitType02, unitType03, unitType04, unitType05, unitType06, unitType07, unitType08, unitType09, unitType10, unitType11, unitType12) values(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)'
data = [
(1, 'Length', 'cm', 'ft', 'in', 'km', 'm', 'micron', 'µm', 'mile', 'mm', 'nm', '', ''),
(2, 'Force', 'DaM', 'dyn', 'gf', 'kgf', 'kip', 'nK', 'lbf', 'mN', 'MT', 'N', 'ozf', 'MN'),
(3, 'Time', 'h', 'min', 'ms', 's', '', '', '', '', '', '', '', ''),
(4, 'Volts', 'V', 'mV', '', '', '', '', '', '', '', '', '', '')
]
try:
with con:
con.executemany(sql, data)
except:
pass
with con:
data = con.execute("SELECT * FROM USER ")
for row in data:
print(row)
【问题讨论】:
标签: python database sqlite openpyxl python-3.9