โดยสามารถติดตั้ง postgreSQL ได้ที่นี้เมื่อโหลดเสร็จแล้วให้โหลดโปรแกรมจัดกันฐานข้อมูลที่ชื่อว่า pgAdmin III เพื่อใช้จัดการกับฐานข้อมูลโดยไม่ต้องใช้คำสั่ง SQL โดยตรง ดาวน์โหลด >>ที่นี่<<
หลังจากติดตั้ง postgreSQL และ pgAdmin เรียบร้อยแล้วให้ติดตั้งไรบรารี่การติดต่อฐานข้อมูลของโพสเกรสโดยใช้คำสั่ง
ถ้าเป็น Linux ใช้คำสั่ง
โค้ด: เลือกทั้งหมด
sudo apt-get install python-psycopg2
โค้ด: เลือกทั้งหมด
http://www.stickpeople.com/projects/python/win-psycopg/
โค้ด: เลือกทั้งหมด
import psycopg2
con = n.connect(host='localhost', user='postgres', password='1234', port='5432',database='lab_db') #ติดต่อฐานข้อมูลโดยตั้งชื่อว่า "con"
cur = con.cursor() #สร้างตัวแปรเพื่อ "cur" เพื่อเรียกใช้ฟังก์ชั่นอื่นๆ
cur.execute('SELECT version()') #คำสั่งรันภาษาSQLโดยเรียกเวอร์ชั่นของpostgreSQL
var = cur.fetchone() #เรียกข้อมูลที่ Query (คิวรี่)มาได้
print var
และจะแสดงข้อความดังนี้
โดยขั้นตอนแรกให้เราเข้าไปสร้างฐานข้อมูลใน postgreSQL('PostgreSQL 9.3.13 on x86_64-unknown-linux-gnu, compiled by gcc (Ubuntu 4.8.4-2ubuntu1~14.04.1) 4.8.4, 64-bit',)
โดยใช้ให้ตารางชื่อ customer ประกอบด้วยฟิวดังนี้
id ประเภท serial
cus_name ประเภท character varrying(30)
cus_email ประเภท character varrying(30)
cus_money ประเภท character varrying(9)
หลังจากนั้นเราจะมาเขียนโปรแกรมเพื่อให้ไพทอนสามารถเพิ่มข้อมูลลงไปบนในฐานข้อมูลได้
โดยจะเขียนคำสั่งเพิ่มข้อมูลในฟังก์ชั่นก่อนถ้าหากยังไม่เข้าใจการเขียนฟังก์ชั่นในภาษาไพทอนสามาศึกษาได้ >>ที่นี่<<
ตัวอย่าง
โค้ด: เลือกทั้งหมด
def insertData(cus_name,cus_email,cus_money):
sql = "INSERT INTO customer(cus_name,cus_email,cus_money)\
VALUES('%s','%s','%s')" %(cus_name,cus_email,cus_money)
try:
cur.execute(sql) #รันคำสั่ง SQL
con.commit() #ถ้าเป็นการเพิ่มข้อมูล, แก้ไข, หรือลบ ต้องมีฟังก์ชั่นนี้ตามหลัง execute
print "insert complete"
except Exception as e:
print e
โค้ด: เลือกทั้งหมด
def viewData(name):
try:
sql = "SELECT * FROM customer WHERE cus_name = '%%s%'" % (name)
cur.execute(sql)
dic = {
'data': cur.fetchall(),
'rows': cur.rowcount
}
return dic #ส่งข้อมูลโดยใช้ตัวแปรประเภท Dictionary เพื่อระบุค่าที่ส่งไปคือ แถวของผลลัพธ์ และข้อมูลที่คิวรี่มาได้
except Exception as e:
print e
โค้ด: เลือกทั้งหมด
def getData(id):
sql = "SELECT * FROM customer WHERE id = '%s'" % (id)
try:
cur.execute(sql)
dic = {
'data': cur.fetchall(),
'rows': cur.rowcount
}
return dic
except Exception as e:
print e
โค้ด: เลือกทั้งหมด
def editData(id,cus_name,cus_email,cus_money):
sql = "UPDATE customer SET cus_name='%s',\
cus_email='%s',cus_money='%s'\
WHERE id = '%s'" % (cus_name,cus_email,cus_money,id)
try:
cur.execute(sql)
con.commit()
return True
except Exception as e:
โดยจะใช้ if else เพื่อเป็นการเลือกเมนูและการรับค่าจากคีย์บอร์ดเพื่อใช้กรอกข้อมูล
โค้ด: เลือกทั้งหมด
while True:
try:
# connect to database
con = n.connect(host='localhost', user='postgres', password='1234', port='5432',database='lab_db')
cur = con.cursor()
cur.execute('SELECT version()')
var = cur.fetchone()
print "Database Conneted"
except n.DatabaseError: # some error
print 'Error %s' %n.DatabaseError
print "###########################################"
print "# 1 = add; 2 = find; 3 = edit; 4 = delete #"
print "###########################################"
try:
menu = int(raw_input("what are you doing: "))
except Exception as e:
"Input Number Only"
try:
if menu == 1 :
print "#####Customer Add#####"
cus_name = raw_input("customer name: ")
cus_email = raw_input("customer email: ")
cus_money = raw_input("customer money: ")
insertData(cus_name,cus_email,cus_money)
elif menu == 2:
key = raw_input("Enter customer name: ")
res = viewData(key)
if(res['rows'] > 0):
print "#####Customer Detail#####"
for i in res['data']:
print "ID: %s NAME: %s EMAILL: %s MONEY %s" %(i[0],i[1],i[2],i[3])
else:
print "Customer not found"
elif menu == 3:
print "#####Edit Customer#####"
getID = raw_input("Enter Customer ID: ")
res = getData(getID)
print "rows: ",res['rows']
if(res['rows'] == 1):
print "#####Edit#####"
for i in res['data']:
print "ID: %s NAME: %s EMAILL: %s MONEY %s" %(i[0],i[1],i[2],i[3])
cus_name = raw_input("Name as: ")
cus_email = raw_input("Email as: ")
cus_money = raw_input("Money as: ")
if editData(i[0],cus_name,cus_email,cus_money):
print "Edit complete"
else:
print "Edint uncomplete"
elif menu == 4:
print "#####Delete Customer"
getId = raw_input("Enter Customer ID: ")
res = getData(getId)
if(len(res) == 1):
print "Detail"
for i in res:
print "ID: %s NAME: %s EMAILL: %s MONEY %s" %(i[0],i[1],i[2],i[3])
conf = raw_input("press y to delete")
if(conf == 'y' or conf == 'Y'):
if deleteData(getId):
print "Delete complete"
else:
print "Delete uncomplete"
else:
print "Cancel"
else:
print "Select 1-4"
con.close()
except Exception as e:
print e
print "Error"