“GIS DICTIONARY A-Z” 查询页面开发(2)——INSERT INTO数据库
今日工作:数据库连接、数据写入
一、数据库连接:使用了pymysql库
from G2_dataClean import defList
import pymysql
db = pymysql.connect(db='gisdictionary',charset='UTF8')
cursor = db.cursor()
二、数据写入
countId = 1 #ID字段
for i in range(0,len(defList)):
alpha = defList[i][1][0:1].lower() #alpha即letter字段,为单词首字母。这一步截取出首字母并.lower()小写。
if not(alpha.isalpha()): #判断首字母是否为a-z字母,如果不是a-z,则分配'#'给它。
alpha = '#'
sql = '''INSERT INTO GISAZ(ID,WORDS,MEANING,LETTER)VALUES(%s,'%s',"%s",'%s');'''%(countId,pymysql.escape_string(defList[i][1]),pymysql.escape_string(defList[i][0]),alpha)
countId += 1
cursor.execute(sql)
try:
db.commit()
except Exception:
print("发生错误",Exception) #不会捕获mysql的warning警告,Try...Except只捕获Error错误。
db.rollback() #回滚事务
finally:
db.close()
代码部分结束,虽然今天的代码看起来又少又容易,但sql语句可真是废了不少力气。
#核心语句
#sql = '''INSERT INTO GISAZ(ID,WORDS,MEANING,LETTER)VALUES(%s,'%s',"%s",'%s');'''
#%(countId,pymysql.escape_string(defList[0][1]),pymysql.escape_string(defList[0][0]),alpha)
#cursor.execute()
#db.commit()
#db.close() #0、核心语句调试了很久,最终使用#三层引号、#%s、#pymysql.escape_string()的方式集合完成了sql语句的撰写;
#pymysql.escape_string()会将数据值string中的 单引号等有意义的符号 通过 多层转义 的方式取消对语句的影响;
#能成功的两种相同效果的无%s语句:(不必深究,下次要用时再根据这次的经验尝试即可)
#(一)'''INSERT INTO GISAZ(ID,WORDS,MEANING,LETTER)VALUES(1,'3D feature',"A representation of a three-dimensional,
#real-world object in a map or scene, with elevation values (z-values) stored within the feature\\'s geometry. Besides geometry,
#3D features may have attributes stored in a feature table. In applications such as CAD, 3D features are often referred to
#as 3D models.",'3');'''
#(二)'INSERT INTO GISAZ(ID,WORDS,MEANING,LETTER)VALUES(1,\'3D feature\',"A representation of a three-dimensional,
#real-world object in a map or scene, with elevation values (z-values) stored within the feature\\\'s geometry. Besides geometry,
#3D features may have attributes stored in a feature table. In applications such as CAD, 3D features are often referred to
#as 3D models.",\'3\');'
#参考文章:https://blog.csdn.net/qq_36622490/article/details/87455903
#1、下面这句SQL删除了相同id的行数据,但是没能保留住其中id最小的那一条行数据;网上方法尝试数次未能成功,报sql语法错误:delete from cqssc where id in (select id from (select id from cqssc where expect in (select expect from cqssc group by expect having count(expect)>1) and id not in (select min(id) from cqssc group by expect having count(expect)>1)) as tmpresult)
#delete from gisaz where id in (select id from (select id from gisaz where ID in (select ID from gisaz group by ID having count(ID)>1)) as tmpresult)
#参考文章:https://www.cnblogs.com/jdbeyond/p/8157224.html
#2、已在Letter列将所有首字母小写
#3、初次插入数据我选择分3次进行,犯下了重置countId的错误;要注意countId是ID字段,不能重置进而引起ID重复。
#4、暂时在数据表中空置了一列other,打算用其放置图片,或是为"See xxxxxx"等meaning创造通往其他词条的超链接(数据库内大概有类似功能)。
#5、(无伤大雅,meaning的数据库类型设置了为text并且没有设置长度)在phpadmin中暂时没有找到完成显示meaning数据的方法,现在都是两条如"In ArcGIS, a message from a replica to its relativ..."和"原始长度207"的显示;
#6、(Warning!)部分Words的长度超过了预设的varchar(20),造成部分词语名称不全。只得修改表结构,重新写入数据。varchar(40)也不够,应该去写一个找出defList[n][1]最大值的程序。
#未来再做数据库还是得先确定最大长度再建表;通过简单的程序'max=len(defList[0][1]);for i in range(0,1729):{if(len(defList[i][1])>max):{max=len(defList[i][1])}}'得到最大值为50,故设定varchar(60)。
#7、考虑是否要把后119条数据按照首字母重新洗入前面的数据中。
最终数据库成果,总共1729条数据:
“GIS DICTIONARY A-Z” 查询页面开发(2)——INSERT INTO数据库的更多相关文章
- “GIS DICTIONARY A-Z” 查询页面开发(3)—— 基础知识之服务器、IP地址、域名、DNS、端口以及Web程序的访问流程
今天补一补基础知识: 一.服务器:能够提供服务的机器,取决于机器上安装的软件(服务软件).服务器响应服务请求,并进行处理. Web服务器:提供Web服务,即网站访问.常见Web服务软件:Apache( ...
- “GIS DICTIONARY A-Z” 查询页面开发(1)——bs4与词典数据处理
第一天的工作:找到数据源,数据下载,数据处理. 数据源:"http://webhelp.esri.com/arcgisserver/9.3/java/geodatabases/definit ...
- ASP.Net MVC开发基础学习笔记(7):数据查询页面
前言 前面铺垫了那么多,今天我们就用MVC5 + EF6 + Bootstrap3来正式创建一个基本查询页面. 为什么从查询页面開始?嘿嘿.由于小弟的.Net生涯就是从查询页面開始的,记得正式工 ...
- 通用easyui查询页面组件
easyui查询页面组件使用指南 本组件开发需求:信息系统的查询页面基本是包括:搜索区域,列表显示区域,按钮条. 1.录入一个查询语句(如:select * from Strudents),录入列表显 ...
- X5的UI部分和传统Web页面开发的差异
http://doc.wex5.com/different-with-std-web-ui/#1 X5的UI部分和传统Web页面开发的差异 WeX5是跨端移动开发框架,BeX5是基于WeX5的企业快速 ...
- MVC5 + EF6 + Bootstrap3 (10) 数据查询页面
文章来源:Slark.NET-博客园 http://www.cnblogs.com/slark/p/mvc5-ef6-bs3-get-started-search-page.html 系列教程:MVC ...
- 移动端页面开发适配 rem布局原理
主题 HTML移动端页面开发适配 rem布局原理 什么是适配,为什么要适配 我们拿到的设计图一般是以640,750,1080分辨率为基准设计的,而现在的手机终端各式各样,分辨率不同,逻辑像素不同 ,适 ...
- 移动端web页面开发常用的头部标签设置
在移动端web页面开发中,我们常需要设置各种头部标签以帮助浏览器更好的解析页面,将页面完美呈现,这里列出了工作中常用的各种头部标签,以备查询. viewport <meta name=" ...
- GIS历史概述与WebGis应用开发技术浅解
声明:本篇在李晓晖的<杂谈WebGIS>,补充更多的资料说明.基于地图二次开发一直断断续续在做,这里算是补充一下基本功把.其实对于前端,WebGis开发都是api,抄demo,改.GIS深 ...
随机推荐
- NOIP 2012 借教室
洛谷 P1083 借教室 https://www.luogu.org/problem/P1083 JDOJ 1783: [NOIP2012]借教室 D2 T2 https://neooj.com/ol ...
- nginx 服务端口权限13的问题
参考此文:https://blog.csdn.net/RunSnail2018/article/details/81185138
- 三层交换机DHCP配置实验(基于Cisco模拟器)
实验设备: 三层交换机一台,主机若干台,直通线若干 实验目的: 实现客户机从DHCP(动态主机配置协议)服务器上获取动态IP地址. 实验步骤: 1.划分VLAN Switch>enable Sw ...
- 原生js-input框全选
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- MacBook安装WIN7开机黑屏的解决办法
同事的一台Macbook,全盘用diskgenius格式化为MBR分区,支持BIOS启动,安装ghost版本的WIN7,开机黑屏,看了网上的帖子没有用,插入启动盘按option键选择从优盘启动,用di ...
- AtCoder Grand Contest 037题解
传送门 \(A\) 直接把每个字母作为一个字符串,如果某个串和它前面的相同,那么就把这个字母和它后面那个字母接起来.然而我并不会证明这个贪心的正确性 //quming #include<bits ...
- 解决VMware虚拟机中centos 7无法上网的问题
在WMware中安装centos 7后发现无法安装软件,开始以为是镜像服务器的问题,后来通过ping之后发现根本没办法连接到网络.由于很多设置都是默认的,并且虚拟机也是NAT模式,和电脑主机共享网络, ...
- 热情组——项目冲刺 Day6
项目相关 作业相关 具体描述 班级 班级链接 作业要求 链接地址 团队名称 热情组 作业目标 实现软件制作,以及在福大的传播 Github链接 链接地址 SCRUM部分: 成员昵称 昨日目标 开始时间 ...
- 实现100以内的素数输出(Python与C++对比)
今天从链接http://www.2cto.com/kf/201302/187699.html中看到了Python实现100以内的素数输出的算法,颇受感触.尤其是被其中的Python的列表生成器的使用方 ...
- [转载]3.5 UiPath对剪切板的介绍和使用
一.剪切板操作的介绍 模拟用户使用剪切板操作的一种行为: 例如使用设置剪切板(SettoClipboard),从剪切板获取(GetfromClipboard)的操作 二.剪切板相关操作在UiPath中 ...