[雪峰磁针石博客]flask构建自动化测试平台7-添加google地图
本章将介绍以下主题:
- mock数据库
- 创建犯罪地图
mock数据库
mockdbhelper.py
class MockDBHelper: def connect(self, database="crimemap"): pass def add_crime(self, category, date, latitude, longitude, description): data = [category, date, latitude, longitude, description] for i in data: print (i, type(i)) def get_all_crimes(self): return [{'latitude': -33.301304, 'longitude': 26.523355, 'date': "2000-01-01", 'category': "mugging", 'description': "mock description"}] def add_input(self, data): pass def clear_all(self): pass
db_setup.py
import pymysql import dbconfig connection = pymysql.connect(host='localhost', user=dbconfig.db_user, passwd=dbconfig.db_password) try: with connection.cursor() as cursor: sql = "CREATE DATABASE IF NOT EXISTS crimemap" cursor.execute(sql) sql = """CREATE TABLE IF NOT EXISTS crimemap.crimes ( id int NOT NULL AUTO_INCREMENT, latitude FLOAT(10,6), longitude FLOAT(10,6), date DATETIME, category VARCHAR(50), description VARCHAR(255), updated_at TIMESTAMP, PRIMARY KEY (id) )""" cursor.execute(sql) connection.commit() finally: connection.close()
crimemap.py
from flask import Flask from flask import render_template from flask import request import json import dbconfig if dbconfig.test: from mockdbhelper import MockDBHelper as DBHelper else: from dbhelper import DBHelper app = Flask(__name__) DB = DBHelper() @app.route("/") def home(): crimes = DB.get_all_crimes() crimes = json.dumps(crimes) return render_template("home.html", crimes=crimes) @app.route("/submitcrime", methods=['POST']) def submitcrime(): category = request.form.get("category") date = request.form.get("date") latitude = float(request.form.get("latitude")) longitude = float(request.form.get("longitude")) description = request.form.get("description") DB.add_crime(category, date, latitude, longitude, description) return home() if __name__ == '__main__': app.run(host='0.0.0.0',port=8000, debug=True)
dbconfig.py
test = True
dbhelper.py
import pymysql import dbconfig class DBHelper: def connect(self, database="crimemap"): return pymysql.connect(host='localhost', user=dbconfig.db_user, passwd=dbconfig.db_password, db=database) def get_all_inputs(self): connection = self.connect() try: query = "SELECT description FROM crimes;" with connection.cursor() as cursor: cursor.execute(query) return cursor.fetchall() finally: connection.close() def add_input(self, data): connection = self.connect() try: query = "INSERT INTO crimes (description) VALUES (%s);" with connection.cursor() as cursor: cursor.execute(query, data) connection.commit() finally: connection.close() def clear_all(self): connection = self.connect() try: query = "DELETE FROM crimes;" with connection.cursor() as cursor: cursor.execute(query) connection.commit() finally: connection.close()
home.html
<!DOCTYPE html> <html lang="en"> <head> <link type="text/css" rel="stylesheet" href="{{url_for('static', filename='css/style.css') }}" /> <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js"> </script> <script type="text/javascript"> var map; var marker; var existing_crimes; function initialize() { var mapOptions = { center: new google.maps.LatLng(-33.30578381949298, 26.523442268371582), zoom: 15 }; map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions); google.maps.event.addListener(map, 'click', function(event){ placeMarker(event.latLng); }); placeCrimes({{crimes | safe}}); } function placeCrimes(crimes) { for (i=0; i<crimes.length; i++) { crime = new google.maps.Marker( { position: new google.maps.LatLng(crimes[i].latitude, crimes[i].longitude), map: map, title: crimes[i].date + "\n" + crimes[i].category + "\n" + crimes[i].description } ); } } function placeMarker(location) { if (marker) { marker.setPosition(location); } else { marker = new google.maps.Marker({ position: location, map: map }); } document.getElementById('latitude').value = location.lat(); document.getElementById('longitude').value = location.lng(); } </script> </head> <body onload="initialize()"> <h1>CrimeMap</h1> <p>A map of recent criminal activity in the Grahamstown area.</p> <div id="map-canvas"></div> <div id="newcrimeform"> <h2>Submit new crime</h2> <form action="/submitcrime" method="POST"> <label for="category">Category</label> <select name="category" id="category"> <option value="mugging">Mugging</option> <option value="breakin">Break-in</option> </select> </select> <label for="date">Date</label> <input name="date" id="date" type="date"> <label for="latitude">Latitude</label> <input name="latitude" id="latitude" type="text"> <label for="longitude">Longitude</label> <input name="longitude" id="longitude" type="text"> <label for="description">Description</label> <textarea name="description" id="description" placeholder="A brief but detailed description of the crime"></textarea> <input type="submit" value="Submit"> </form> </div> </body> </html>
style.css
body { font-family: sans-serif; background: #eee; } #map-canvas { width: 70%; height: 500px; float: left; } #newcrimeform { float: right; width: 25%; } input, select, textarea { display: block; color: grey; border: 1px solid lightsteelblue; line-height: 15px; margin: 2px 6px 16px 0px; width: 100%; } input[type="submit"] { padding: 5px 10px 5px 10px; color: black; background: lightsteelblue; border: none; box-shadow: 1px 1px 1px #4C6E91; } input[type="submit"]:hover { background: steelblue; }
参考资料
- 本文相关书籍下载
- 讨论 钉钉免费群21745728 qq群144081101 567351477
- 本文涉及的python测试开发库 谢谢点赞!
- 本文代码地址
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
[雪峰磁针石博客]flask构建自动化测试平台6-交互式犯罪地图
6-交互式犯罪地图 本章将介绍以下主题: mysql 创建犯罪地图 本文最新版本 代码地址 安装mysql # apt-get install mysql-server # pip3 install pymysql # python db_setup.py # 创建数据库 dbconfig.py test = False db_user = 'root' db_password = '654321_' db_setup.py import pymysql import dbconfig connection = pymysql.connect(host='localhost', user=dbconfig.db_user, passwd=dbconfig.db_password) try: with connection.cursor() as cursor: sql = "CREATE DATABASE IF NOT EXISTS crimemap" cursor.execute(sql) sql = """CREATE TABLE IF NOT EXISTS crimemap.cr...
- 下一篇
来入门一下kotlin吧
Kotlin是什么? Kotlin是一种在java虚拟机上运行的静态类型的编程语言,被称之为 Android 世界的Swift,由 JetBrains 设计开发并开源。 Kotlin的优势! Kotlin可以编译成java字节码,也可以编译成JavaScript。方便在没有java虚拟机的主机上运行。(据说学会Kotlin,你就是一名全栈工程师 (/偷笑)) 并且的2017年的 Google I/O大会上,Google宣布将Kotlin作为Android的官方开发语言。(这就意味着,作为一名“资深‘的android开发工程师,以后就必须得会Kotlin了) Kotlin相对于java开发android有什么优势呢?(个人亲身体验) 拿辉哥的话说:一个字!简洁!(一直用java写android,当我用kotlin写了android的一个Demo之后,暂且不讨论它的底层等等,对于写法上,就是简洁!可能本章节体现的简洁不是很明显) 这一篇的入门,前提是你是有java基础的情况下。这样子你可以举一反三,才会看懂一部分。所以......往下看吧 Kotlin的使用!(这里以Android Stu...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8安装Docker,最新的服务器搭配容器使用
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Windows10,CentOS7,CentOS8安装Nodejs环境
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- SpringBoot2全家桶,快速入门学习开发网站教程
- MySQL8.0.19开启GTID主从同步CentOS8