Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Python เชื่อมต่อกับฐานข้อมูล Unix (dbm)


แพ็คเกจ dbm ในไลบรารี่ในตัวของ Python มีพจนานุกรม เช่น ฐานข้อมูลสไตล์ DBM ของอินเตอร์เฟส ไลบรารี dbm เป็นเอ็นจิ้นฐานข้อมูลอย่างง่าย เขียนโดย Ken Thompson DBM ย่อมาจาก DataBase Manager ซึ่งใช้โดยระบบปฏิบัติการ UNIX ไลบรารีจะจัดเก็บข้อมูลตามอำเภอใจโดยใช้คีย์เดียว (คีย์หลัก) ในบัคเก็ตขนาดคงที่และใช้เทคนิคการแฮชเพื่อให้ดึงข้อมูลได้อย่างรวดเร็วด้วยคีย์

มีโมดูลต่อไปนี้ในแพ็คเกจ dbm −

โมดูล dbm.ndbm จัดเตรียมอินเทอร์เฟซสำหรับไลบรารี Unix “(n)dbm” ออบเจ็กต์ Dbm ทำงานเหมือนพจนานุกรม โดยควรเก็บคีย์และค่าเป็นไบต์ โมดูลไม่รองรับเมธอด items() และ values()

โมดูล dbm.dumb มีอินเทอร์เฟซเหมือนพจนานุกรมแบบถาวร ซึ่งเขียนด้วยภาษา Python ทั้งหมด ไม่เหมือนกับโมดูลอื่นๆ เช่น dbm.gnu ไม่จำเป็นต้องใช้ไลบรารีภายนอก เช่นเดียวกับการแมปแบบต่อเนื่องอื่นๆ คีย์และค่าจะถูกเก็บไว้เป็นไบต์เสมอ

โมดูลเหล่านี้ใช้ภายในโดยโมดูลชั้นวางของของ Python ในกรณีของฐานข้อมูล shelve ชื่อฐานข้อมูลที่ผู้ใช้ระบุจะมี '.dir' postfix ฟังก์ชัน whichdb() ของอ็อบเจ็กต์ dbm จะบอกว่าการใช้งาน dbm ใดที่มีอยู่ในการติดตั้ง Python ปัจจุบัน

>>> dbm.whichdb('mydbm.db')

'dbm.dumb'

>>> db = dbm.open('mydbm.db','n')
>>> db['name'] = Rajani Deshmukh'
>>> db['address'] = 'Shivajinagar Pune'
>>> db['PIN'] = '431001'
>>> db.close()

ฟังก์ชัน open() อนุญาตให้โหมดแฟล็กเหล่านี้ -

ค่า ความหมาย
'r'
เปิดฐานข้อมูลที่มีอยู่สำหรับการอ่านเท่านั้น (ค่าเริ่มต้น)
'w'
เปิดฐานข้อมูลที่มีอยู่สำหรับการอ่านและการเขียน
'c'
เปิดฐานข้อมูลสำหรับการอ่านและเขียน สร้างขึ้นหากไม่มีอยู่
'n'
สร้างฐานข้อมูลใหม่เปล่าเสมอ เปิดอ่านและเขียนได้

ออบเจ็กต์ dbm เป็นพจนานุกรมที่เหมือนกับอ็อบเจ็กต์ เช่นเดียวกับอ็อบเจกต์ชั้นวาง ดังนั้นการดำเนินการพจนานุกรมทั้งหมดจึงสามารถทำได้ ออบเจ็กต์ dbm สามารถเรียกใช้เมธอด get(),pop(), append(0 and update() ได้ โค้ดต่อไปนี้เปิดขึ้น 'mydbm.db' ด้วยแฟล็ก 'r' และวนซ้ำในคอลเล็กชันของคู่คีย์-ค่า

>>> db = dbm.open('mydbm.db','r')
>>> for k,v in db.items():
print (k,v)
b'name' : Rajani Deshmukh'
b'address' : b'Shivajinagar Pune'
b'PIN' : b'431001'

ออบเจ็กต์ dbm ยังมีวิธีการดังต่อไปนี้ -

ซิงค์(): ซิงโครไนซ์ไดเร็กทอรี on-disk และไฟล์ข้อมูล เมธอดนี้เรียกโดยเมธอด Shelve.sync()

ปิด(): ปิดฐานข้อมูล dbm

วัตถุ gnu dbm มีวิธีการดังต่อไปนี้ -

คีย์แรก()

เป็นไปได้ที่จะวนซ้ำทุกคีย์ในฐานข้อมูลโดยใช้วิธีนี้และวิธี nextkey() วิธีนี้จะคืนค่าคีย์เริ่มต้น

gdbm .nextkey(คีย์): ส่งกลับคีย์ที่ตามหลังคีย์ในการข้ามผ่าน

gdbm .reorganize(): ฟังก์ชันนี้จะจัดระเบียบฐานข้อมูลใหม่ วัตถุ gnu dbm จะไม่ทำให้ความยาวของไฟล์ฐานข้อมูลสั้นลง ยกเว้นโดยใช้การปรับโครงสร้างใหม่นี้ มิฉะนั้น พื้นที่ไฟล์ที่ถูกลบจะถูกเก็บไว้และนำมาใช้ใหม่เมื่อมีการเพิ่มคู่ (คีย์, ค่า) ใหม่