今日工作:数据库连接、数据写入

一、数据库连接:使用了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数据库的更多相关文章

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

    今天补一补基础知识: 一.服务器:能够提供服务的机器,取决于机器上安装的软件(服务软件).服务器响应服务请求,并进行处理. Web服务器:提供Web服务,即网站访问.常见Web服务软件:Apache( ...

  2. “GIS DICTIONARY A-Z” 查询页面开发(1)——bs4与词典数据处理

    第一天的工作:找到数据源,数据下载,数据处理. 数据源:"http://webhelp.esri.com/arcgisserver/9.3/java/geodatabases/definit ...

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

     前言 前面铺垫了那么多,今天我们就用MVC5 + EF6 + Bootstrap3来正式创建一个基本查询页面. 为什么从查询页面開始?嘿嘿.由于小弟的.Net生涯就是从查询页面開始的,记得正式工 ...

  4. 通用easyui查询页面组件

    easyui查询页面组件使用指南 本组件开发需求:信息系统的查询页面基本是包括:搜索区域,列表显示区域,按钮条. 1.录入一个查询语句(如:select * from Strudents),录入列表显 ...

  5. X5的UI部分和传统Web页面开发的差异

    http://doc.wex5.com/different-with-std-web-ui/#1 X5的UI部分和传统Web页面开发的差异 WeX5是跨端移动开发框架,BeX5是基于WeX5的企业快速 ...

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

    文章来源:Slark.NET-博客园 http://www.cnblogs.com/slark/p/mvc5-ef6-bs3-get-started-search-page.html 系列教程:MVC ...

  7. 移动端页面开发适配 rem布局原理

    主题 HTML移动端页面开发适配 rem布局原理 什么是适配,为什么要适配 我们拿到的设计图一般是以640,750,1080分辨率为基准设计的,而现在的手机终端各式各样,分辨率不同,逻辑像素不同 ,适 ...

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

    在移动端web页面开发中,我们常需要设置各种头部标签以帮助浏览器更好的解析页面,将页面完美呈现,这里列出了工作中常用的各种头部标签,以备查询. viewport <meta name=" ...

  9. GIS历史概述与WebGis应用开发技术浅解

    声明:本篇在李晓晖的<杂谈WebGIS>,补充更多的资料说明.基于地图二次开发一直断断续续在做,这里算是补充一下基本功把.其实对于前端,WebGis开发都是api,抄demo,改.GIS深 ...

随机推荐

  1. python 面试真题

    0.Python是什么? Python是一种解释型语言.但是跟C和C的衍生语言不同,Python代码在运行之前不需要编译.其他解释型语言还包括PHP和Ruby. Python是动态类型语言,指的是在声 ...

  2. Debian 9 编译Python

    Debian 9 编译Python 参考网址: https://solarianprogrammer.com/2017/06/30/building-python-ubuntu-wsl-debian/ ...

  3. Linux挖矿程序kworkerds分析

    0×00 背景概述 近日,同伴的一台Linux服务器中了kworkerds挖矿程序,随即对挖矿程序进行了处理与分析. 0×01服务器现状 进入服务器之后通过top命令,没有发现有占用CPU资源过高的进 ...

  4. 【redis】分布式锁实现,与分布式定时任务

    如果你还不知道redis的基本命令与基本使用方法,请看 [redis]redis基础命令学习集合 写在前面 redis辣么多数据结构,这么多命令,具体一点,都可以应用在什么场景呢?用来解决什么具体的问 ...

  5. 推荐一款移动端小视频App声咖视频

    推荐一款移动端小视频App声咖视频 1 介绍 声咖app,这款软件是一款声音交友社交软件,在上面你可以轻松互动,找到你的知心朋友,并且可以自由添加好友,与其他人互动,让交友更加轻松!, 2 特色功能介 ...

  6. kubernetes实战(九):k8s集群动态存储管理GlusterFS及使用Heketi扩容GlusterFS集群

    1.准备工作 所有节点安装GFS客户端 yum install glusterfs glusterfs-fuse -y 如果不是所有节点要部署GFS管理服务,就在需要部署的节点上打上标签 [root@ ...

  7. 【转】python实现Telnet操作

    # -*- coding: utf-8 -*- import logging import telnetlib import time import sys import os host_ip = ' ...

  8. W5500电路图

    W5500是韩国一款集成全硬件 TCP/IP 协议栈的嵌入式以太网控制器,W5500同时也是一颗工业级以太网控制芯片,最近发现我们国内也有和W5500 芯片一样芯片 介绍给大家 如下图:

  9. Ajax 跨域请求,Chrome 无法显示 Set-Cookie

    在使用 Ajax 进行跨域请求时,前后端均已设置 withCredentials = true,但 Chrome 前端响应无法显示 Set-Cookie. 一开始以为 Cookie 并没有设置成功,但 ...

  10. Lock+Condition实现机制

    前言:大部分多线程同步场景,在功能和性能层面,synchronized可以满足,少部分场景Lock可以满足,dubbo的源码也符合这个比例,需要使用到Condition的场景极少,整个dubbo源码中 ...