查询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 ...
随机推荐
- swift label不同颜色、不同字体
let string = "点击注册按钮,即表示您已同意隐私条款和服务协议" let ranStr = "同意" let attrstring:NSMutabl ...
- asp 301代码
<% if request.ServerVariables("HTTP_HOST")="ksfmjy.com" then Response.Status= ...
- some links
rename user: http://www.cyberciti.biz/faq/howto-change-rename-user-name-id/
- Python----文件的IO操作
一.文件操作 r 以只读方式打开文件.文件的指针将会放在文件的开头.这是默认模式. rb 以二进制格式打开一个文件用于只读.文件指针将会放在文件的开头.这是默认模式. r+ 打开一个文件用于读写.文件 ...
- 微信超时5s,调用客服接口异步回复消息(PHP)
当用户触发事件,如果不能保证在5s内响应,可以先返回success,然后异步调用返回的信息.代码如下: // 立即返回(异步执行) ignore_user_abort(true);//start=== ...
- Spring 配置文件XML -- <beans>中属性概述
beans : xml文件的根节点. xmlns : XML NameSpace的缩写,因为XML文件的标签名称都是自定义的,自己写的和其他人定义的标签很有可能会重复命名,而功能却不一样,所以需要加上 ...
- history对象 back() forward() go() 和pushState() replaceState()
History(Window.history对象)对象保存着用户上网的历史记录.处于安全方面的考虑,开发人员无法得知用户浏览过的URL,但是借由用户访问过的页面列表,同样可以在不知道实际URL的情况下 ...
- python之~ 序列化与反序列化
sy1.proto文件 syntax = "proto2"; message stuff { required int32 stuff_ID = ; required ; opti ...
- cocos2d-lua ARPG手机游戏《烈焰遮天》(客户端+服务端+数据库)发布说明
服务器发布流程及其规范1,环境准备 a, mvn命令行:从\\10.21.210.161\share\tools\apache-maven-3.1.1-bin.tar.gz取出安装包, ...
- 【Sort】QuickSort
快速排序,平均运行时间O(N log N),最坏运行时间O(N^2). 我觉得先看Python版的快排算法(http://www.cnblogs.com/fcyworld/p/6160558.html ...