สารบัญ
- การตั้งค่าสภาพแวดล้อม
- การตั้งค่าสภาพแวดล้อมท้องถิ่น
- วิธีรับ Python
- วิธีการติดตั้ง Python
- การติดตั้ง Windows
- การติดตั้ง Unix/Linux
- การติดตั้ง MAC
- การตั้งค่าเส้นทางสำหรับ Python
- การตั้งค่าพาธสำหรับ Unix/Linux
- การตั้งค่าพาธสำหรับ Windows
- ตัวแปรสภาพแวดล้อม Python
- รัน Python
- ไวยากรณ์พื้นฐาน
- ตัวระบุ Python
- คำสั่งหลาม
- เยื้องใน Python
- ความคิดเห็นใน Python
- รับอินพุต
- แสดงผลลัพธ์
- ประเภทตัวแปร
- การกำหนดค่าให้กับตัวแปร
- ประเภทข้อมูลหลาม
- เครื่องสาย
- ทูเปิลส์
- รายการ
- ตัวเลข
- ตัวดำเนินการพื้นฐาน
- ผู้ปฏิบัติงานที่ได้รับมอบหมาย
- ตัวดำเนินการระดับบิต
- ตัวดำเนินการตรรกะ
- ตัวดำเนินการเลขคณิต
- ตัวดำเนินการเปรียบเทียบ
- ตัวดำเนินการข้อมูลประจำตัว
- ผู้ประกอบการสมาชิก
- การตัดสินใจ
- ถ้าคำสั่ง
- if-else
- ซ้อนกัน if
- If-elif-else-บันได
- ชวเลข if คำสั่ง
- คำสั่ง if-else แบบย่อ
- ลูป
- ในขณะที่ลูป
- สำหรับวง
- ลูปซ้อน
- คำสั่งควบคุมวง
- ดำเนินการต่อคำสั่ง
- คำสั่งหยุด
- ใบแจ้งยอด
- ตัวเลข
- การแปลงประเภทตัวเลข
- ฟังก์ชันตัวเลขสุ่ม
- ฟังก์ชันตรีโกณมิติ
- ฟังก์ชันทางคณิตศาสตร์
- เครื่องสาย
- การสร้างสตริง
- ตัวดำเนินการพิเศษสตริง
- ตัวดำเนินการจัดรูปแบบสตริง
- ตัวละครหนี
- สร้างขึ้นในวิธีการสตริง
- ทูเปิลส์
- การเข้าถึงค่าในทูเปิลส์
- กำลังอัปเดต tuples
- ตัวดำเนินการทูเพิลพื้นฐาน
- สร้างขึ้นในฟังก์ชันทูเพิล
- การจัดทำดัชนีและการแบ่งส่วน
- การลบทูเพิล
- รายการ
- การเข้าถึงค่าในรายการ
- กำลังอัปเดตรายการ
- ตัวดำเนินการรายการพื้นฐาน
- ฟังก์ชันและเมธอดของรายการในตัว
- การจัดทำดัชนีและการแบ่งส่วน
- ลบรายการองค์ประกอบ
- พจนานุกรม
- การสร้างพจนานุกรม
- การเพิ่มองค์ประกอบในพจนานุกรม
- การลบองค์ประกอบออกจากพจนานุกรม
- วิธีพจนานุกรม Python
- วันและเวลา
- เวลาทูเปิล
- โมดูลเวลา
- โมดูลปฏิทิน
- ฟังก์ชั่น
- วิธีการกำหนดฟังก์ชัน
- เรียกฟังก์ชัน
- ผ่านโดยการอ้างอิง
- ผ่านค่า
- อาร์กิวเมนต์ของฟังก์ชัน
- อาร์กิวเมนต์ความยาวผันแปร
- อาร์กิวเมนต์ที่จำเป็น
- อาร์กิวเมนต์เริ่มต้น
- อาร์กิวเมนต์ของคีย์เวิร์ด
- ฟังก์ชั่นนิรนาม
- โมดูล
- ใบแจ้งยอดการนำเข้า
- คำสั่งจากการนำเข้า
- จากการนำเข้า * Statement
- ค้นหาโมดูล
- ฟังก์ชัน locals() และ globals()
- เนมสเปซและการกำหนดขอบเขต
- dir( ) ฟังก์ชัน
- ฟังก์ชันรีโหลด()
- ไฟล์ I / O
- การเปิดไฟล์
- คุณสมบัติของวัตถุไฟล์
- การปิดไฟล์
- พร้อมถ้อยแถลง
- วิธีการเขียน
- วิธีการอ่าน
- เปลี่ยนชื่อ() method
- วิธีการลบ ()
- ตำแหน่งไฟล์
- ข้อยกเว้น
- ข้อยกเว้นคืออะไร?
- การจัดการข้อยกเว้น
- ทำให้เกิดข้อยกเว้น
- รายการข้อยกเว้นมาตรฐาน
- ผู้ใช้กำหนดข้อยกเว้น
- การยืนยันใน Python
- ชั้นเรียนและวัตถุ
- การสร้างคลาส
- คลาส Objects
- การเข้าถึงคุณสมบัติ
- แอตทริบิวต์คลาสที่สร้างขึ้น
- เก็บขยะ
- การสืบทอดคลาส
- วิธีการเอาชนะ
- นิพจน์ทั่วไป
- ฟังก์ชั่นจับคู่
- ฟังก์ชั่นการค้นหา
- ตัวแก้ไขนิพจน์ทั่วไป
- รูปแบบนิพจน์ทั่วไป
- คลาสตัวละคร
- กรณีซ้ำ
- สมอ
- การเขียนโปรแกรม CGI
- การเข้าถึงฐานข้อมูล MySQL
- เครือข่าย
- ซ็อกเก็ตคืออะไร?
- โมดูลซ็อกเก็ต
- โมดูลอินเทอร์เน็ต Python
- กำลังส่งอีเมล
- การส่งอีเมล HTML โดยใช้ Python
- การส่งไฟล์แนบเป็นอีเมล
- การเขียนโปรแกรมมัลติเธรด
- ตั้งกระทู้ใหม่
- โมดูลเกลียว
- การซิงโครไนซ์เธรด
- คิวลำดับความสำคัญแบบมัลติเธรด
- การประมวลผล XML
- XML คืออะไร?
- สถาปัตยกรรม XML Parser และ API
- การแยกวิเคราะห์ XML ด้วย SAX APIs
- เมธอด make_parser
- วิธีการแยกวิเคราะห์
- วิธี parseString
- การเขียนโปรแกรม GUI
- วิดเจ็ต Tkinter
- การจัดการเรขาคณิต
- บทความแนะนำ
การเขียนโปรแกรม CGI
CGI หรือ Common Gateway Interface คือชุดของมาตรฐานที่กำหนดวิธีการแลกเปลี่ยนข้อมูลระหว่างสคริปต์ที่กำหนดเองและเว็บเซิร์ฟเวอร์ ปัจจุบัน NCSA ยังคงรักษาข้อกำหนด CGI
การท่องเว็บ
หากคุณต้องการเข้าใจแนวคิดของ CGI นี่คือตัวอย่าง คลิกไฮเปอร์ลิงก์เพื่อเรียกดู URL หรือหน้าเว็บที่ต้องการ
- เบราว์เซอร์ติดต่อกับเว็บเซิร์ฟเวอร์และต้องการ URL
- เว็บเซิร์ฟเวอร์แยกวิเคราะห์ URL และค้นหาชื่อไฟล์ หากพบไฟล์ มันก็จะส่งกลับไปที่เบราว์เซอร์ มิฉะนั้น จะส่งข้อความแสดงข้อผิดพลาดซึ่งระบุว่าคุณขอไฟล์ผิด
- เว็บเบราว์เซอร์ตอบรับจากเว็บเซิร์ฟเวอร์และแสดงไฟล์ที่ได้รับหรือข้อความแสดงข้อผิดพลาด
แม้ว่าจะเป็นไปได้ที่จะตั้งค่าเซิร์ฟเวอร์ HTTP เพื่อให้เมื่อใดก็ตามที่มีการร้องขอไฟล์ในไดเร็กทอรีที่ระบุไฟล์นั้นจะไม่ถูกส่งกลับ แทนที่จะทำงานเป็นโปรแกรม และสิ่งที่ส่งออกของโปรแกรมนั้นจะถูกส่งกลับมาเพื่อให้เบราว์เซอร์ของคุณแสดงผล
ฟังก์ชันนี้เรียกว่า Common Gateway Interface หรือ CGI และแผนเรียกว่าสคริปต์ CGI โปรแกรม CGI อาจเป็น Python Script, PERL Script, Shell Script, C หรือ C++ เป็นต้น

ส่วนหัว HTTP
เส้น ประเภทเนื้อหา:ข้อความ/html เป็นส่วนหนึ่งของส่วนหัว HTTP ที่ส่งไปยังเบราว์เซอร์เพื่อทำความเข้าใจเนื้อหา ส่วนหัว HTTP ทั้งหมดจะอยู่ในรูปแบบต่อไปนี้
ใช่ไม่ใช่ | หัวข้อ | คำอธิบาย |
หนึ่ง | ตำแหน่ง: URL | URL ที่ส่งคืนแทนที่จะเป็น URL ที่ร้องขอ คุณสามารถใช้ฟิลด์นี้เพื่อเปลี่ยนเส้นทางคำขอไปยังไฟล์ใดก็ได้ |
สอง | ชนิดของเนื้อหา: | เป็นสตริง A MIME ที่กำหนดรูปแบบของไฟล์ที่ส่งคืน ตัวอย่างเช่น Content-type:text/html |
3 | แก้ไขล่าสุด: วันที่ | วันที่แก้ไขทรัพยากร |
4 | หมดอายุ: วันที่ | ข้อมูลจะกลายเป็นโมฆะในวันที่ เบราว์เซอร์ใช้ตัวเลือกนี้เพื่อตัดสินใจว่าจะต้องรีเฟรชหน้าเมื่อใด |
5 | ชุดคุกกี้: สตริง | ตั้งคุกกี้ผ่าน สตริง |
6 | เนื้อหาความยาว: N | กำลังส่งคืนความยาวของข้อมูล เบราว์เซอร์ใช้ค่านี้เพื่อรายงานเวลาดาวน์โหลดโดยประมาณสำหรับไฟล์ |
ตัวแปรสภาพแวดล้อม CGI
โปรแกรม CGI สามารถเข้าถึงตัวแปรสภาพแวดล้อมบางอย่างได้ ตัวแปรเหล่านี้มีบทบาทสำคัญในการเขียนโปรแกรม CGI
ใช่ไม่ใช่ | ชื่อตัวแปร | คำอธิบาย |
หนึ่ง | CONTENT_LENGTH | ความยาวของข้อมูลแบบสอบถาม มีให้สำหรับคำขอ POST เท่านั้น |
สอง | ชนิดของเนื้อหา | ชนิดข้อมูลของเนื้อหา ใช้เมื่อลูกค้าส่งเนื้อหาไปยังเซิร์ฟเวอร์ เช่น การอัพโหลดไฟล์ |
3 | QUERY_STRING | ข้อมูลที่เข้ารหัส URL จะถูกส่งไปพร้อมกับคำขอเมธอด GET |
4 | PATH_INFO | เป็นเส้นทางสำหรับสคริปต์ CGI |
5 | HTTP_COOKIE | ส่งคืนชุดคุกกี้ในรูปแบบของคู่ค่าและคีย์ |
6 | REMOTE_HOST | ชื่อเต็มของโฮสต์ที่ทำการร้องขอ หากไม่มีข้อมูล คุณสามารถใช้ REMOTE_ADDR เพื่อรับที่อยู่ IR ได้ ค่าในการรายงานเวลาดาวน์โหลดโดยประมาณสำหรับไฟล์ |
7 | SCRIPT_FILENAME | เส้นทางแบบเต็มไปยังสคริปต์ CGI |
8 | REQUEST_METHOD | วิธีการนี้ใช้ทำการร้องขอ วิธีการทั่วไปคือ POST และ GET |
9 | ชื่อเซิร์ฟเวอร์ | ชื่อโฮสต์ของเซิร์ฟเวอร์หรือที่อยู่ IP |
10 | SERVER_SOFTWARE | เวอร์ชันและชื่อของซอฟต์แวร์ที่เซิร์ฟเวอร์ทำงานอยู่ |
สิบเอ็ด | HTTP_USER_Agent | ส่วนหัวคำขอของตัวแทนผู้ใช้มีข้อมูลเกี่ยวกับตัวแทนผู้ใช้ที่เป็นแหล่งที่มาของคำขอ เป็นชื่อเว็บบราวเซอร์ |
12 | REMOTE_ADDR | ที่อยู่ IP ของรีโมตโฮสต์ทำการร้องขอ มีประโยชน์สำหรับการบันทึกหรือรับรองความถูกต้อง |
13 | SCRIPT_NAME | ชื่อของสคริปต์ CGI |
GET วิธี
วิธี GET เป็นวิธีการเริ่มต้นในการส่งผ่านข้อมูลจากเบราว์เซอร์ไปยังเว็บเซิร์ฟเวอร์ และสร้างสตริงที่ปรากฏในตำแหน่งของเบราว์เซอร์: กล่อง คุณไม่ควรใช้วิธี GET หากคุณมีรหัสผ่านหรือข้อมูลที่ละเอียดอ่อนอื่นๆ วิธี GET มีข้อจำกัดด้านขนาด: สามารถส่งอักขระได้เพียง 1024 ตัวในสตริงคำขอ เมธอด GET จะส่งข้อมูลโดยใช้ส่วนหัว QUERY_STRING และจะสามารถเข้าถึงได้ในโปรแกรม CGI ของคุณผ่านตัวแปรสภาพแวดล้อม QUERY_STRING
SYNTAX
|_+_|
ผลลัพธ์

วิธีโพสต์
POST เป็นวิธีการร้องขอที่สนับสนุนโดย HTTP ที่ใช้โดยเวิลด์ไวด์เว็บ เมธอด POST ร้องขอให้เว็บเซิร์ฟเวอร์ยอมรับข้อมูลที่อยู่ในเนื้อหาของข้อความร้องขอ ใช้เมื่ออัปโหลดไฟล์หรือเมื่อส่งแบบฟอร์มเว็บที่กรอกแล้ว
SYNTAX
|_+_|
การใช้คุกกี้ใน CGI
โปรโตคอล HTTP เป็นแบบไร้สัญชาติ สำหรับเว็บไซต์เชิงพาณิชย์ คุณจะต้องรักษาข้อมูลเซสชันในหน้าต่างๆ
ในบางสถานการณ์ การใช้คุกกี้เป็นวิธีที่มีประสิทธิภาพมากที่สุดในการติดตามและจดจำการตั้งค่า ค่าคอมมิชชัน การซื้อ และข้อมูลอื่นๆ เพื่อประสบการณ์ของผู้เยี่ยมชมหรือสถิติไซต์ที่ดีขึ้น
มันทำงานอย่างไร?
เซิร์ฟเวอร์ส่งข้อมูลบางส่วนไปยังเบราว์เซอร์ในรูปแบบของคุกกี้ เบราว์เซอร์อาจยอมรับคุกกี้ หากได้รับการยอมรับ ก็จะถูกเก็บไว้เป็นบันทึกข้อความตรงบนฮาร์ดไดรฟ์ ตอนนี้ เมื่อผู้เยี่ยมชมมาถึงหน้าอื่น คุกกี้ก็พร้อมสำหรับการดึงข้อมูล เมื่อดึงข้อมูลแล้ว เซิร์ฟเวอร์ของคุณจะจดจำสิ่งที่เก็บไว้
การเข้าถึงฐานข้อมูล MySQL
MySQLdb เป็นอินเทอร์เฟซสำหรับเชื่อมต่อกับเซิร์ฟเวอร์ฐานข้อมูล MySQL จาก Python มันดำเนินการ Python ฐานข้อมูล API v2.0 และสร้างขึ้นบน MySQL C API
การสร้างตารางฐานข้อมูล
เมื่อทำการเชื่อมต่อฐานข้อมูลแล้ว คุณก็พร้อมที่จะสร้างตารางหรือบันทึกลงในตารางฐานข้อมูลโดยใช้วิธีการดำเนินการของเคอร์เซอร์ที่สร้างขึ้น

INSERT การทำงาน
จำเป็นต้องมีการดำเนินการแทรกเมื่อคุณต้องการสร้างระเบียนของคุณลงในตารางฐานข้อมูล

อ่านการดำเนินการ
READ Operation ในฐานข้อมูลใด ๆ หมายถึงดึงข้อมูลบางส่วนจากฐานข้อมูล
เมื่อทำการเชื่อมต่อฐานข้อมูลแล้ว คุณจะได้รับการตั้งค่าให้ทำการสืบค้นข้อมูลในฐานข้อมูลนี้ คุณสามารถใช้ เรียก () วิธีการดึงบันทึกเดียวหรือ ดึงข้อมูล() วิธีการดึงค่าหลายค่าจากตารางฐานข้อมูล
อัพเดทการทำงาน
การดำเนินการ UPDATE ในฐานข้อมูลใด ๆ หมายถึงการอัปเดตระเบียนซึ่งมีอยู่ในฐานข้อมูล

ลบการดำเนินการ
การดำเนินการ DELETE จะลบบันทึกบางส่วนออกจากฐานข้อมูลของคุณ

การทำธุรกรรม
ธุรกรรมเป็นกลไกที่ช่วยให้มั่นใจถึงความสอดคล้องของข้อมูล
COMMIT Operation
Commit คือการดำเนินการที่ให้สัญญาณสีเขียวแก่ฐานข้อมูลเพื่อสิ้นสุดการเปลี่ยนแปลง และหลังจากการดำเนินการนี้ การเปลี่ยนแปลงจะไม่สามารถย้อนกลับได้
ตัวอย่างเช่น db.commit()
การดำเนินการย้อนกลับ
หากคุณไม่ต้องการการเปลี่ยนแปลงอย่างน้อยหนึ่งรายการและต้องการย้อนกลับการเปลี่ยนแปลงทั้งหมด คุณควรใช้การย้อนกลับ () กระบวนการ.
ตัวอย่างเช่น db.rollback()
ยกเลิกการเชื่อมต่อฐานข้อมูล
หากต้องการยกเลิกการเชื่อมต่อฐานข้อมูล คุณควรใช้เมธอด close()
หากการเชื่อมต่อกับฐานข้อมูลถูกปิด DB จะทำการยกเลิกธุรกรรมใดๆ ที่ค้างอยู่ อย่างไรก็ตาม ขึ้นอยู่กับรายละเอียดการใช้งานระดับล่างของ DB แอปพลิเคชันจะดีกว่าสำหรับการเรียกคอมมิตหรือย้อนกลับอย่างชัดเจน
การจัดการข้อผิดพลาด
มีหลายสาเหตุของข้อผิดพลาด ความล้มเหลวในการเชื่อมต่อ, ข้อผิดพลาดทางไวยากรณ์ในคำสั่ง SQL ที่ดำเนินการ, เป็นเพียงตัวอย่างบางส่วน
DB API กำหนดจำนวนข้อผิดพลาดที่อาจมีอยู่ในแต่ละโมดูลฐานข้อมูล ตารางต่อไปนี้แสดงรายการข้อยกเว้น
ใช่ไม่ใช่ | ข้อยกเว้น | คำอธิบาย |
หนึ่ง | ข้อผิดพลาด | เป็นคลาสพื้นฐานสำหรับข้อผิดพลาด มันควรจะเป็นข้อผิดพลาดของคลาสย่อย |
สอง | InterfaceError | มันถูกใช้สำหรับข้อผิดพลาดในโมดูลฐานข้อมูล ไม่ใช่ตัวฐานข้อมูลเอง มันควรจะเป็นข้อผิดพลาดของคลาสย่อย |
3 | คำเตือน | ใช้สำหรับปัญหาที่ไม่ร้ายแรง ควรคลาสย่อย StandardError |
4 | DataError | เป็นคลาสย่อยของ DatabaseError ที่อ้างถึงข้อผิดพลาดในข้อมูล |
5 | ฐานข้อมูลผิดพลาด | ใช้สำหรับข้อผิดพลาดในฐานข้อมูล มันควรจะผิดพลาดคลาสย่อย |
6 | OperationalError | คลาสย่อยของ DatabaseError หมายถึงข้อผิดพลาด เช่น ขาดการเชื่อมต่อกับฐานข้อมูล ข้อผิดพลาดอยู่นอกเหนือการควบคุมของ Python scripter |
7 | InternalError | คลาสย่อยของ DatabaseError หมายถึงข้อผิดพลาดภายในโมดูลฐานข้อมูล เช่น เคอร์เซอร์ไม่ทำงานอีกต่อไป |
8 | ไม่รองรับข้อผิดพลาด | คลาสย่อยของ DatabaseError หมายถึงการพยายามเรียกใช้ฟังก์ชันที่ไม่รองรับ |
9 | ความสมบูรณ์ข้อผิดพลาด | คลาสย่อยของ DatabaseError สำหรับสถานการณ์ที่สร้างความเสียหายต่อความสมบูรณ์ของความสัมพันธ์ เช่น ข้อจำกัดเฉพาะหรือคีย์ภายนอก |
10 | ProgrammingError | คลาสย่อยของ DatabaseError อ้างถึงข้อผิดพลาด เช่น ชื่อตารางที่ไม่ถูกต้อง |