Python 你介意我把这个打开久一点,直到我明白为什么我现在不工作吗?你的代码多么漂亮和优雅!!多么完美和智慧啊。非常感谢你!!我想补充两个细节: id zip city state longitude latitude timez
Python 你介意我把这个打开久一点,直到我明白为什么我现在不工作吗?你的代码多么漂亮和优雅!!多么完美和智慧啊。非常感谢你!!我想补充两个细节: id zip city state longitude latitude timez,python,sql,postgresql,sqlalchemy,Python,Sql,Postgresql,Sqlalchemy,你介意我把这个打开久一点,直到我明白为什么我现在不工作吗?你的代码多么漂亮和优雅!!多么完美和智慧啊。非常感谢你!!我想补充两个细节: id zip city state longitude latitude timezone dst 3817 99950 Ketchikan AK -131.46633 55.875767 -9 1 .... @classmethod def getZipsWi
你介意我把这个打开久一点,直到我明白为什么我现在不工作吗?你的代码多么漂亮和优雅!!多么完美和智慧啊。非常感谢你!!我想补充两个细节:
id zip city state longitude latitude timezone dst
3817 99950 Ketchikan AK -131.46633 55.875767 -9 1
....
@classmethod
def getZipsWithinXMiles(cls, lat1: str, lon1: str, dst: str):
""" Get zip codes within 'dst' miles of lat1,lon1"""
print(lat1, lon1, dst)
breakpoint()
query1 = "SELECT * ," \
"( 3958.75 * acos(sin(lat1/57.2958) * sin(latitude/57.2958) + " \
"cos(lat1/57.2958) * cos(latitude/57.2958) * " \
"cos(longitude/57.2958 - lon1/57.2958))" \
") as distanceInMiles " \
"FROM ZipCode " \
"HAVING distanceInMiles < dst " \
"ORDER BY distanceInMiles" \
% {'lat1': float(lat1), 'lon1': float(lon1), 'dst': int(dst)}
query2 = "SELECT * FROM " \
"(SELECT id, city, state, zip, " \
"( 3958.75 * acos(sin(lat1/57.2958) * sin(latitude/57.2958) + " \
"cos(lat1/57.2958) * cos(latitude/57.2958) * " \
"cos(longitude/57.2958 - lon1/57.2958))" \
") as distanceInMiles " \
"FROM ZipCode " \
" ) inner_query " \
"HAVING distanceInMiles < dst " \
"ORDER BY distanceInMiles" \
% {'lat1': float(lat1), 'lon1': float(lon1), 'dst': int(dst)}
print(query1)
print(query2)
breakpoint()
zipCodes = cls.query.from_statement(query2).all()
return zipCodes
cursor.execute(statement, parameters)
sqlalchemy.exc.ProgrammingError: (psycopg2.ProgrammingError) relation "zipcode" does not exist
LINE 1: ...57.2958 - lon1/57.2958))) as distanceInMiles FROM ZipCode )...
class ZipCode(db.Model):
__tablename__ = "zipCode"
id = db.Column(db.Integer, primary_key=True)
zip = db.Column(db.String(5), nullable=False) # 23567
city = db.Column(db.String(50), nullable=False) # New York
state = db.Column(db.String(2), nullable=False) # Ex: NY
longitude = db.Column(db.String(15), nullable=False)
latitude = db.Column(db.String(15), nullable=False)
timezone = db.Column(db.String(3), nullable=False) # Ex: -5,-10
dst = db.Column(db.String(2)) # Ex: 0,1
__tablename__ = "zipCode"
query1 = "..." \
...
'FROM "zipCode" ' \
...
def getZipsWithinXMiles(cls, lat1: str, lon1: str, dst: str):
""" Get zip codes within 'dst' miles of lat1,lon1"""
query = db.text("""
SELECT *
FROM (
SELECT "zipCode".*
, (3958.75 *
acos(sin(:lat1 / 57.2958) * sin(cast(latitude as double precision) / 57.2958) +
cos(:lat1 / 57.2958) * cos(cast(latitude as double precision) / 57.2958) *
cos(cast(longitude as double precision) / 57.2958 - :lon1 / 57.2958)))
as distanceInMiles
FROM "zipCode") zc
WHERE zc.distanceInMiles < :dst
ORDER BY zc.distanceInMiles
""")
zipCodes = cls.query.\
from_statement(query).\
params(lat1=float(lat1),
lon1=float(lon1),
dst=int(dst)).\
all()
return zipCodes