การแปลงข้อมูลที่ดึงมาจาก database ที่เป็น list ให้เป็น string เพื่อนำมาใช้ประโยชน์ในด้านต่างๆ

แชร์ความรู้ภาษา Python ไพทอน การเขียนโปรแกรมภาษาไพทอน

Moderator: mindphp, ผู้ดูแลกระดาน

benzas00123
PHP Super Member
PHP Super Member
โพสต์: 244
ลงทะเบียนเมื่อ: 06/01/2020 9:58 am

การแปลงข้อมูลที่ดึงมาจาก database ที่เป็น list ให้เป็น string เพื่อนำมาใช้ประโยชน์ในด้านต่างๆ

โพสต์ที่ยังไม่ได้อ่าน โดย benzas00123 »

วันนี้ผมจะมาแนะนำวิธีการนำข้อมูลที่เรา SELECT มาจาก database เพื่อนำมาใช้ประโยชน์ในด้านต่างๆ ด้วยภาษา Python อย่างวันนี้ตัวอย่างที่ยกขึ้นมา จะเป็นการนำ ข้อมูล Version ที่อยู่ใน database มา + กันและแสดงผลลัพธ์ค่าที่เราต้องการนั่นเอง เพื่อไม่ให้เสียเวลาเรามาเริ่มกันเลย

1.ทำการ import library psycopg2 เพื่อที่จะทำการเชื่อมต่อกับ database

โค้ด: เลือกทั้งหมด

import psycopg2 as p
2.เขียนคำสั่งเพื่อเชื่อมต่อ database

โค้ด: เลือกทั้งหมด

con = p.connect(
    host='localhost',
    database='ben01',
    user='postgres',
    password='postgres'
)
3. สร้างฟังก์ชั่นขึ้นมาเพื่อที่เราจะสามารถทำการเรียกข้อมูลจาก database มาใช้

โค้ด: เลือกทั้งหมด

def sum_ver():
    cur = con.cursor()
    cur.execute("SELECT latest_version FROM ir_module_module where state = 'installed'")
    total = cur.fetchall()
4. สร้างตัวแปรขึ้นมาเพื่อที่จะเก็บค่าตัวเลขที่เราจะทำการแยกเอาไว้

โค้ด: เลือกทั้งหมด

    num1 = 0
    num2 = 0
    num3 = 0
    num4 = 0
    num5 = 0
โดย code คือ เราต้องการจะแสดงข้อมูลของ lastest_version จาก ฐานข้อมูล ir_module_module โดยที่ข้อมูลที่เราต้องการจะโชวน์ state จะต้องเป็น installed เท่านั้นถ้า ไม่ใช่ จะไม่ทำการเรียกของแถวนั้นมาโชวน์
ผลลัพท์
Python Knowledge-1.png
Python Knowledge-1.png (3.25 KiB) Viewed 1164 times
5. ค่าที่ได้จะเป็น ประเภท list ซึ่งถ้าเราต้องการจะนำเลขภายในมาใช้เราจะต้องทำการดึง ตัวเลขภายในออกมาให้กลายเป็น string ก่อน โดยวิธีการคือเราจะใช้ for loop ในการดึงค่า

โค้ด: เลือกทั้งหมด

    for row in total:
        for i in row:
ผลลัพธ์
Python Knowledge-1.png
Python Knowledge-1.png (2.02 KiB) Viewed 1164 times
6. ซึ่งพอถึงขั้นตอนนี้แล้วเราจะทำการแยกค่าภายในตัว string เพื่อเก็บไว้ภายในตัวแปรที่เราทำการสร้างขึ้น โดยใช้คำสั่ง split

โค้ด: เลือกทั้งหมด

            sp = i.split('.')
แต่ภายในข้อมูลของเราบางตัวมันเป็นค่า 4 ตำแหน่ง บางตัวเป็น 5 ตำแหน่ง ซึ่งเราจะใช้ 5 ตำแหน่ง
Python Knowledge-1.png
Python Knowledge-1.png (2.01 KiB) Viewed 1164 times
7. เราสามารถแก้ไขได้ง่ายๆโดยการ ใช้ append เพื่อเพิ่ม 0 ต่อไปข้างหลังทุกตัว

โค้ด: เลือกทั้งหมด

sp.append('0')
8. เราจะทำการนำค่าที่เรา split แล้ว มาทำการ + เพิ่มภายในตัวแปรที่เราได้สร้างขึ้นมาไว้ แต่ละตำแหน่งโดยใช้คำสั่ง

โค้ด: เลือกทั้งหมด

            num1 += int(sp[0])
            num2 += int(sp[1])
            num3 += int(sp[2])
            num4 += int(sp[3])
            num5 += int(sp[4])
    resu = "Summery Version = {}.{}.{}.{}.{}".format(num1, num2, num3, num4, num5)
    print(resu)
และแสดงผลลัพธ์ที่เราต้องการ
ผลลัพธ์ที่ได้
Python Knowledge-1.png
Python Knowledge-1.png (6.23 KiB) Viewed 1164 times
fullcode

โค้ด: เลือกทั้งหมด

# -*- coding:utf-8 -*
import psycopg2 as p

con = p.connect(
    host='localhost',
    database='ben01',
    user='postgres',
    password='postgres'
)


def sum_ver():
    cur = con.cursor()
    cur.execute("SELECT latest_version FROM ir_module_module where state = 'installed'")
    total = cur.fetchall()
    num1 = 0
    num2 = 0
    num3 = 0
    num4 = 0
    num5 = 0

    for row in total:
        for i in row:
            sp = i.split('.')
            sp.append('0')
            num1 += int(sp[0])
            num2 += int(sp[1])
            num3 += int(sp[2])
            num4 += int(sp[3])
            num5 += int(sp[4])
    resu = "Summery Version = {}.{}.{}.{}.{}".format(num1, num2, num3, num4, num5)
    print(resu)
    
    if __name__ == '__main__':
    sum_ver()
อ้างอิง
viewtopic.php?f=16&t=64136
https://www.w3schools.com/python/ref_string_split.asp
https://www.pythonforbeginners.com/dictionary/python-split
  • Similar Topics
    ตอบกลับ
    แสดง
    โพสต์ล่าสุด

ผู้ใช้งานขณะนี้

สมาชิกกำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และบุคลทั่วไป 45