“GIS DICTIONARY A-Z” 查詢頁面開發(2)——INSERT INTO資料庫

来源:https://www.cnblogs.com/hsh17/archive/2019/10/20/11706584.html
-Advertisement-
Play Games

今日工作:資料庫連接、數據寫入 一、資料庫連接:使用了pymysql庫 二、數據寫入 代碼部分結束,雖然今天的代碼看起來又少又容易,但sql語句可真是廢了不少力氣。 最終資料庫成果,總共1729條數據: ...


今日工作:資料庫連接、數據寫入

一、資料庫連接:使用了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條數據:


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  •     最近在園子里看了大神寫的( "面試官,不要再問我三次握手和四次揮手" ),忍不住寫段程式來測試一番。     在網上找了很多例子,大多只實現了TCP點對點通訊,但實際應用中,一個伺服器埠往往要監聽多個客戶端發來 ...
  • 環境如下: 操作系統: CentOS-7-x86_64-DVD-1908.iso 步驟如下: 1. 查看網卡信息 2.編輯對應網卡的配置文件,我這裡網卡是ens33,所以我修改的是文件 ifcfg-ens33 >文件修改為(其中紅字是修改部分,最後4行是新增的靜態地址配置,請按照自己的網路環境配置好 ...
  • 玩電腦數位時間長了,伴隨著各種設備的增加,各種網線也在蛛網一般四處延爬。怎麼能將群暉的兩個網路介面用上,以省下一個網路設備?起先題主在群暉虛擬機里折騰了LEDE軟路由,可以將電腦的網線連接到群暉的另一個網路介面,把電腦接入的設備省了。本以為以後可以萬事無求了。到了現在,隨著群暉上各種服務的開發,虛擬 ...
  • 剛剛安裝完新的Ubuntu系統後不能直接右鍵創建新的文件,那麼怎麼做呢 辦法: 打開終端,cd 切換到 Templates文件夾下,然後輸入: sudo gedit text 這樣就在Templates文件夾下創建了一個名為text的空模板,直接保存,以後就可以右鍵來創建新的文件了。 ...
  • DHCP服務概述: 名稱:DHCP - Dynamic Host Configuration Protocol 動態主機配置協議。 功能:DHCP(Dynamic Host Configuration Protocol,動態主機配置協議)是一個區域網的網路協議,主要優點: 特點: C/S 模式 自動 ...
  • crontab 是用來讓使用者在固定時間或固定間隔執行程式之用 參數說明 選項 功能 -e 編輯crontab定時任務 -l 查詢crontab任務 -r 刪除當前用戶所有的crontab任務 時間格式 項目 含義 範圍 第一個“*” 一小時當中的第幾分鐘 0-59 第二個“*” 一天當中的第幾小時 ...
  • 回到目錄 (續上小節) 3. 分壓偏置 前面的“改進型固定偏置”電路,雖然情況比原始的固定偏置電路好了一點,但還是不太理想,於是人們又設計出了性能更加穩定的分壓偏置(voltage-divider bias configuration)電路,如下圖所示: 圖3-6.06 分壓偏置電路的穩定性非常完美 ...
  • https://www.jb51.net/article/82608.htm https://blog.csdn.net/taian1665/article/details/86492400 https://blog.51cto.com/bantu/1982399 https://blog.csdn ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...