1 读db
import sqlite3
def ReadDB(path: str):
conn = sqlite3.connect(path)
cursor = conn.cursor()
sqlstr = 'select id, name, age, class from Student;'
cursor.execute(sqlstr)
'''
#读取方法1:一次读取一条记录
for item in cursor:
print(item) #item返回一条记录
'''
'''
#读取方法2:一次读取所有记录
rows = cursor.fetchall() #rows返回所有记录,rows是一个二维列表
'''
conn.commit()
cursor.close()
conn.close()
return
path = ''
ReadDB(path)
print('程序成功执行!')
2 写db
def WriteSqlite(outputInfo: list) -> None:
if os.path.exists("output.db"):
os.remove("output.db")
conn = sqlite3.connect("output.db")
cursor = conn.cursor()
cursor.execute("""
CREATE TABLE IF NOT EXISTS AbsoluteIndex (
id INTEGER PRIMARY KEY AUTOINCREMENT,
linkid INTEGER,
ptIndex INTEGER,
LonOffset REAL,
LatOffset REAL,
LengthOffset REAL
)
""")
sqlstr = """
INSERT INTO AbsoluteIndex (id, linkid, ptIndex, LonOffset, LatOffset, LengthOffset)
VALUES (?, ?, ?, ?, ?, ?)
"""
cursor.executemany(sqlstr, outputInfo)
conn.commit()
cursor.close()
conn.close()
return
3 读取GeomWGS84字段
def geostr2list(GeomWGS84Org: str) -> list:
geo = []
i1 = GeomWGS84Org.find('(')
i2 = GeomWGS84Org.find(')')
s = GeomWGS84Org[i1+1:i2]
s_list = s.split(',')
for i, x in enumerate(s_list):
x_list = x.split()
long = float(x_list[0])
lati = float(x_list[1])
geo.append((long, lati))
return geo
def Sqlite2List(dbPath: str, linkids: list) -> map:
conn = sqlite3.connect(dbPath)
conn.enable_load_extension(True)
conn.load_extension('mod_spatialite')
cursor = conn.cursor()
map_linkid_Link = collections.defaultdict(Link)
for chaid in linkids:
sqlstr = f"SELECT id, AsEWKT(GeomWGS84) FROM BD_CHA where id = {str(chaid)};"
cursor.execute(sqlstr)
seqnrs = []
longis = []
latis = []
for row in cursor:
chaid = int(row[0])
GeomWGS84 = str(row[1])
geos = geostr2list(GeomWGS84)
for i in range(len(geos)):
seqnrs.append(i)
longis.append(geos[i][0])
latis.append(geos[i][1])
linktmp = Link(chaid, seqnrs, longis, latis)
map_linkid_Link[chaid] = linktmp
conn.commit()
cursor.close()
conn.close()
return map_linkid_Link