我正在使用 For 循环为三个变量 distance、cty、ctry 赋予值。然后我想将这些值存储在 sqlite3 的表中。不幸的是,该程序仅将 For 循环的第一行值存储在 sqlite3 数据库中:
14004 GOROKA PAPUA NEW GUINEA
代码:
from math import sin, cos, sqrt, atan2, radians
import sqlite3
R = 6373.0
conn = sqlite3.connect('global_airports_sqlite.db')
cur = conn.cursor()
cur.execute('DROP TABLE IF EXISTS Ports')
cur.execute('''
CREATE TABLE Ports ( Delta INTEGER, City TEXT, Country TEXT )''')
coords= 'SELECT lat_decimal, lon_decimal, city, country FROM airports ORDER
BY id ASC LIMIT 10'
for cord in cur.execute(coords):
lat2 = radians(cord[0])
lon2 = radians(cord[1])
cty = cord[2]
ctry = cord[3]
dlon = lon2 - lon1
dlat = lat2 - lat1
a = sin(dlat / 2)**2 + cos(lat1) * cos(lat2) * sin(dlon / 2)**2
c = 2 * atan2(sqrt(a), sqrt(1 - a))
distance = int(R * c)
cur.execute('INSERT INTO Ports (Delta, City, Country) VALUES (?,?,?)',
(distance, cty, ctry))
conn.commit()
如何让它在我的三列中存储所有 10 个值:Delta、City、Country?
最佳答案
我不确定sqlite3
包,我个人使用pymysql
;但是,我认为流程应该是相同的;
因此,我认为在开始 for 循环之前,可能需要先获取数据?
...
cur.execute('DROP TABLE IF EXISTS Ports')
cur.execute('''
CREATE TABLE Ports ( Delta INTEGER, City TEXT, Country TEXT )''')
coords= 'SELECT lat_decimal, lon_decimal, city, country FROM airports ORDER BY id ASC LIMIT 10')
cur.execute(coords)
data = cur.fetchall()
for records in data:
...
尝试一下
关于python - 使用python3中的For循环在sqlite3中创建3列x 10行表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48431679/