查询mysql中经纬度判断坐标范围
先上代码,稍后附上说明:
1. 从mysql中取出记录,打印有效经纬度:
import json
import MySQLdb # lines = c.fetchall() #所有的记录,一个tuple
#one = c.fetchone() def gen_row():
db = MySQLdb.connect(host='192.168.1.205', user='root', passwd='', db='kaqu')
c = db.cursor()
c.execute("select params from t2")
row = c.fetchone()
while row is not None:
try:
latitude = float(json.loads(row[0])['latitude']) #同时过滤掉经纬度为空和没有经纬度的记录
longitude = float(json.loads(row[0])['longitude'])
if not (latitude == 5e-324 or latitude == 0): #有些传过来的错误经纬度
print(latitude, longitude)
row = c.fetchone()
except:
row = c.fetchone() if __name__ == "__main__":
gen_row()
感觉这里的try被玩坏了~~~~(>_<)~~~~
2. 统计出现次数最多的10个经纬度:
import json
import MySQLdb # lines = c.fetchall() #所有的记录,一个tuple
#one = c.fetchone() def gen_row():
db = MySQLdb.connect(host='192.168.1.205', user='root', passwd='', db='kaqu')
c = db.cursor()
c.execute("select params from t1")
row = c.fetchone()
points = []
while row is not None:
try:
latitude = float(json.loads(row[0])['latitude'])
longitude = float(json.loads(row[0])['longitude'])
if not (latitude == 5e-324 or latitude == 0.0):
#print(latitude, longitude)
points.append((latitude,longitude)) row = c.fetchone()
except:
row = c.fetchone()
return points def gen_count(points):
from collections import Counter
counts = Counter(points)
max = counts.most_common(10)
print(max) if __name__ == "__main__":
points = gen_row()
gen_count(points)
数据库中大约有65w的数据,脚本运行需耗费约300M内存,运行结束立即释放。
之前看过pandas库的简单使用,拿pandas来做统计应该效果更好,以后有空在学习一下。
附:mysql fetchone() 的2种迭代方法
# Using a while loop
cursor.execute("SELECT * FROM employees")
row = cursor.fetchone()
while row is not None:
print(row)
row = cursor.fetchone() # Using the cursor as iterator
cursor.execute("SELECT * FROM employees")
for row in cursor:
print(row)
经测试,fetchone() 和 fetchall() 所消耗内存几乎一致,2者的内部都是使用的list,所以直接fetchall()似乎更简单。
查询mysql中经纬度判断坐标范围的更多相关文章
- MySQL_(Java)分页查询MySQL中的数据
MySQL_(Java)使用JDBC向数据库发起查询请求 传送门 MySQL_(Java)使用JDBC创建用户名和密码校验查询方法 传送门 MySQL_(Java)使用preparestatement ...
- 查询MySQL中某个数据库中有多少张表
SELECT COUNT(*) TABLES, table_schema FROM information_schema.TABLES WHERE table_schema = '数据库' GRO ...
- JDBC查询MySQL中的表
在数据库test里先创建表school,内容如下 创建接口对象:Statement stmt=con.createStatement(); //创建语句(Statement)ResultSet res ...
- 如何查询mysql中是否表被锁
可直接在mysql命令行执行:show engine innodb status\G;(只能通过cmd或者shell登录mysql) 查看造成死锁的sql语句,分析索引情况,然后优化sql然后show ...
- php查询mysql中的json编码后的字符串内容的方法
问题 mysql里存的是json编码后的字符串,其中中文会被转为unicode码,所以直接查询是查询不到的. mysql里的查询如 like "%\u6211\u662f%" 也是 ...
- JDBC动态查询MySQL中的表(按条件筛选)
动态查询实现按条件筛选.PreparedStatement 准备语句指定要查询的表头列,.setString()通过赋值指定行,.executeQuery()执行语句 在数据库test里先创建表sch ...
- 如何查询mysql中date类型的时间范围记录?
java date类型 会不会自动转换 mysql date类型? 抹除掉后面 时间 ? 时间不是查询条件?
- sql中在查询语句中加判断,控制输出的内容
Case具有两种格式.简单Case函数和Case搜索函数. --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END ...
- python查询mysql中是否存在某张表(传参)
客户端输入了表的名字,服务端判断表是否存在. 参考:https://blog.csdn.net/qq_36523839/article/details/80639297 需要导入re模块: impor ...
随机推荐
- ios GCD的使用及封装
实现代码: CGDHelper /* * Grand Central Dispatch (GCD)是Apple开发的一个多核编程的解决方法. * 系统要求:iOS4.0以上. */ #import & ...
- 【IE6的疯狂之二】IE6中PNG Alpha透明(全集)
ie7,fireofx,opera,及至webkit内核的chrome ,safari….. 这些浏览器均支持png的Alpha透明. 很多人说IE6不支持PNG透明,其实IE支持100%透明的PNG ...
- LeetCode #139. Word Break C#
Given a string s and a dictionary of words dict, determine if s can be segmented into a space-separa ...
- 解决larave-dompdf中文字体显示问题
1.安装laravel-dompdf依赖. Packagist:https://packagist.org/packages/barryvdh/laravel-dompdf composer requ ...
- react使用map生成的元素,key的设定不对导致每次删除都删除最后一个
假设 你的key设置为map中的索引,假设为0,1,2(原dom树),现在你用splice删除掉1,重新渲染时,还是会按map索引按顺序渲染为0,1(新dom树),由于react渲染机制是比较的key ...
- 【.NET】发送Email
首先,在web.config的appSettings配置一下. <appSettings> <add key="FromMail" value="xxx ...
- UEFI安装Win10
启动方式: Legency UEFI 分区表类型: MBR 主引导记录 最多4个主分区 最大支持2.1T硬盘 GPT 基于可扩展固件接口(EFI) 分区数不限 NTFS格式最大支持256T硬盘 安装模 ...
- linux共享文件夹
mnt中没有 hgfs,重新安装vm tools后问题解决
- CodeForces 702E Analysis of Pathes in Functional Graph
倍增预处理. 先看一下这张图的结构,因为出度都是$1$,所以路径是唯一的,又因为每个点都有出度,所以必然有环,也就是一直可以走下去. 接下来我们需要记录一些值便于询问: 设$t[i][j]$表示从$i ...
- HDU 5845 Best Division
$dp$,字典树. $dp$递推式很容易知道.dp[i]=max{dp[j]+1} a[j]^..^a[i]<=X,并且$[j,i]$长度不能超过$L$. 但是暴力来复杂度极高,所以需要用字典树 ...