python

 

เราสามารถใช้ python อ่านเนื้อหาจากเว็บได้โดยใช้โมดุล urllib

เอาตัวอย่างจาก Dive into Python - 11.2. How not to fetch data over HTTP

>>> import urllib
>>> data = urllib.urlopen('http://diveintomark.org/xml/atom.xml').read()    1
>>> print data
<?xml version="1.0" encoding="iso-8859-1"?>
<feed version="0.3"
  xmlns="http://purl.org/atom/ns#"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xml:lang="en">
  <title mode="escaped">dive into mark</title>
  <link rel="alternate" type="text/html" href="http://diveintomark.org/"/>
  <-- rest of feed omitted for brevity -->
 

ตั้งใจเพียงจะหาทางแปลง swf เป็น mp3 แต่ว่าไปพบโมดูลไพธอนในการถอด swf มาหมดเลย :P

ก่อนอื่น ต้องติดตั้ง python-setuptools ก่อน
จริง ๆ แล้วในอูบุนตู น่าจะใช้แค่คำสั่ง...
$ sudo aptitude install python-setuptools
เพียงแค่นี้ก็พอ แต่ปรากฎว่าไม่ผ่าน เขาขึ้นข้อผิดพลาดว่า 503 Services unavailable สงสัยเป็นที่ apt-proxy เพี้ยน
(ในเดเบียนติดตั้งผ่าน ใช้แค่คำสั่งนี้พอ)

เลยต้องใช้วิธีตามเว็บของผู้พัฒนา

Topic: 
 

ก่อนอื่น จะสร้างฐานข้อมูลเพื่อใช้เป็นตัวอย่างก่อน
โดยจะสร้างตารางเป็นสมุดโทรศัพท์ ใส่ข้อมูลเบื้องต้นไป 5 แถว
(อย่าเชื่อ syntax มากนะครับ เริ่มหัดใหม่เหมือนกัน)

import adodb

driver = 'postgres'
host = 'host'
user = 'user'
password = 'password'
db = 'db'

conn = adodb.NewADOConnection(driver)
cur = conn.Connect(host,user,password,db)

sql = """\
  CREATE TABLE phone (
  pid INT,
  name VARCHAR(50),
  phone VARCHAR(50),
  category VARCHAR(50),
  update DATE,
  rem TEXT,
  img BYTEA)"""
cur = conn.Execute(sql)

from datetime import datetime
today = conn.DBDate(datetime.date(datetime.today()))

sql = "INSERT INTO phone \
Topic: 
 

เกร็ด

  • ปกติเราไม่สามารถสร้าง database จากคำสั่ง connection ได้ เช่น
    >>> conn=adodb.NewADOConnection('postgres')
    >>> conn.Connect('host','user','password','')
    Traceback (most recent call last):
      File "<stdin>", line 1, in ?
      File "/usr/lib/python2.4/site-packages/adodb/adodb.py", line 199, in Connect
        self._connect(host,user,password,database)
      File "/usr/lib/python2.4/site-packages/adodb/adodb_postgres.py", line 46, in _connect
        self._conn = psycopg.connect(dsn)
    psycopg.OperationalError: FATAL:  database "user" does not exist
Topic: 
 

Connection Class

Execute(sql, [params])
Execute sql, returning a cursor object. The
optional params is a dictionary that contains the bind
variables. All blob fields are automatically and transparently
retrieved for you.
SelectLimit(sql, limit, [offset])
Execute sql, retrieving only limit rows, an
optional offset from the beginning of the recordset, returning
a cursor object.
UpdateBlob(table, field, blob, whereclause, blobtype='BLOB')

Executes the equivalent following sql statement:

UPDATE table SET field = blob WHERE whereclause

The blobtype field should be set to either 'BLOB' or 'CLOB'.
Any special encoding required for the blob is applied
transparently.

Pages

Subscribe to RSS - python