“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条数据:

原文地址:https://www.cnblogs.com/hsh17/p/11706584.html

时间: 2024-10-08 13:30:17

“GIS DICTIONARY A-Z” 查询页面开发(2)——INSERT INTO数据库的相关文章

“GIS DICTIONARY A-Z” 查询页面开发(3)—— 基础知识之服务器、IP地址、域名、DNS、端口以及Web程序的访问流程

今天补一补基础知识: 一.服务器:能够提供服务的机器,取决于机器上安装的软件(服务软件).服务器响应服务请求,并进行处理. Web服务器:提供Web服务,即网站访问.常见Web服务软件:Apache(开源).Tomcat(Java).IIS(微软)…… 二.IP:网络之间互连的协议,即为计算机网络相互连接进行通信而设计的协议.IP地址具有唯一性(每台电脑都有一个唯一的IP地址). IP地址就是类似127.0.0.1.27.166.14.101.163.129.1.108一样点与数字的组合. 三.

ASP.Net MVC开发基础学习笔记(7):数据查询页面

 前言 前面铺垫了那么多,今天我们就用MVC5 + EF6 + Bootstrap3来正式创建一个基本查询页面. 为什么从查询页面开始?嘿嘿,因为小弟的.Net生涯就是从查询页面开始的,记得正式工作的第一个月就是各种模块的查询.先做查询有什么好处?首先查询只读数据,不写数据.对数据库本身的数据安全不造成影响也不怕写入脏数据的麻烦.其次增删改查这四个操作里面,查询的难度应该是最小的,不用考虑事务流程等方面的问题. 本节最后将会生成如下页面: 创建Model 关于Model.数据库上下文.Ent

移动端页面开发

移动端页面开发 移动客户端的开发类型(站在前端立场上来说),主要是三种:Native App(原生APP),也就是完全使用移动设备系统语言写的客户端,iPhone iPad就是纯Object-C,安卓就是纯JAVA, 是性能最棒的开发方式,但灵活性不好.Web App, 就是在移动浏览器里打开的,纯HTML+CSS+JS,说白了就是个网页,只不过非常的富应用,比如手机浏览器访问的GMAIL.就是在浏览器里打开的页面.IOS支持可以在桌面创建访问的快捷方式,但是说到底还是打开Safari跑.而且对

移动端页面开发流程

移动端页面布局 一.移动端app分类 1.Native App原生app手机应用程序 使用原生的语言开发的手机应用,Android系统用的是java,ios系统用的是object-C 2.Hybrid App 混合型app手机应用程序 混合使用原生的程序和html5页面开发的手机应用 3.Web App 基于Web的app手机应用程序 完全使用html5页面加前端js框架开发的手机应用 二.Viewport视口 视口是移动设备上用来显示网页的区域,一般会比移动设备可视区域大,宽度可能是980px

MVC5 + EF6 + Bootstrap3 (10) 数据查询页面

文章来源:Slark.NET-博客园 http://www.cnblogs.com/slark/p/mvc5-ef6-bs3-get-started-search-page.html 上一节:MVC5 + EF6 + Bootstrap3 (9) HtmlHelper用法大全(下) 源码下载:点我下载 目录 前言 创建Model 创建数据库上下文DbContext 创建初始化数据 创建Controller 创建View 查看结果页面 查看数据库 结尾 前言 前面铺垫了那么多,今天我们就用MVC5

WEB开发框架系列教程 (二)页面开发之基础资料页面

上一节我们一起创建TEST项目的完整的解决方案 接下来我们面临的是一个一个具体功能页面开发了 在进行开发之前我们需要对我们接下来的页面开发工作进行分析 可以这么说任何一个项目中都有很多非常基础类数据 我们把这类数据归类叫基础数据 这些页面需要有,但是又不常用. 我们如果要开发的话,虽然不复杂肯定也耗时. 开发框架中提供了,此类页面的解决方案.让我们不需要花费太多的时间就能搞定这样的页面 通过统一的配置页面完成的.注意,我们选择的依据是,系统中需要,但又不常用的功能 为什么这么选择? 如果是常用的

移动端web页面开发常用的头部标签设置

在移动端web页面开发中,我们常需要设置各种头部标签以帮助浏览器更好的解析页面,将页面完美呈现,这里列出了工作中常用的各种头部标签,以备查询. viewport <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0"> initial-scale属性控制页面最初加载时的缩放等级.maximum-scale.m

PC端页面开发基础-问题总结(一)

本人在做前端开发相关工作时,遇到过也解决过很多技术性问题.今天起,就从PC端页面开发开始,理一理新手们可能会遇到的那些坑. 本文非教学文章,仅供有前端开发基础的同学同僚们一起讨论与总结,本人将从零开始持续更新,欢迎大家的批评指正. 高度塌陷问题: 父元素的高度会被子元素撑开,当子元素都设置了浮动时,由于子元素半脱离文档流,父元素失去子元素的高度,便会产生高度塌陷 hack1:父元素overflow:hidden; hack2:子元素下方加一个空div,并设置height:0;clear:both

微信页面开发 第三次总结

暂停微信页面开发,先处理yxt安卓司机版本. 司机端需求: 登入功能(由管理员分配账户),导航地图(提供搜索功能,寻找地点,快速导航) 接单控制=>是否接单,是否自动接单,接单类型 接单:当乘客抢到单后,司机有120秒时间可以抢单.参与抢单的司机会显示订单被抢,显示被谁抢.自己抢到,则显示去接乘客,或者呼叫乘客,去接乘客则显示路线导航,呼叫乘客则拨打乘客电话, 在接乘客时候显示距离和电话按钮,(乘客端可显示司机距离),司机点击接到乘客,订单状态变为服务中,同时,乘客端收到服务开始的消息. 服务过