標籤:python database sqlite3 mysql postgresql
sqlite:基於檔案的關聯式資料庫,已經包含在python標準庫中。
gadfly:用python寫的基於檔案的關聯式資料庫
mysql:基於伺服器的關聯式資料庫
postgresql:基於伺服器的關聯式資料庫
python訪問資料庫的兩種方式:
1. ORM
2. DB-API
###################################################################
ORM:對象-關係管理器,如果不希望直接嵌入sql可以使用ORM。
ORM模組:
1. SQLAlchemy
2. SQLObject
#####################################################################
DB-API:通過嵌入sql來訪問資料庫。
所有資料庫的python介面都要遵循DB-API規範:
資料庫的API都是通過connect函數建立串連返回Connection對象:
connect(user, password, host, port,database/db):
connect(“dbname, user,password, host, port”)
通過connect串連的對象的屬性:
close() :關閉資料庫連接
commit() :提交當前事物
rollback() :取消當前事物
cursor() :使用這個串連建立並返回一個遊標或類遊標的對象
errorhandler(cxn, cur,errcls, errval) :作為已給遊標的控制代碼
遊標對象的屬性:
arraysize
connection
description
lastrowid
rowcount
callproc(func[, args]):調用一個預存程序
close():關閉遊標對象
execute(op[, args]):執行一個資料庫查詢/命令
executemany(op[, args]):為給定的每個參數準備並執行一個資料庫查詢/命令
fetchone():得到結果集的下一行
fetchmany([size=cursor.arraysize]):得到結果集的下幾行
fetchall():返回結果集中剩下的所有行
__iter__()
messages
next()
nextset()
rownumber
setinputsizes(sizes)
setoutputsize(size[, col])
#####################################################################
sqlite3
#####################################################################
使用sqlite不用安裝,調用sqlite3的connect函數自動組建檔案。
import sqlite3
cxn =sqlite3.connect(r’C:\temp\test’)
cur = cxn.cursoe()
cur.execute(‘CREATE TABLEtest(var1 VARCHAR(10), var2 INTEGER)’)
cur.execute(‘INSERT INTOtestable VALUES(“canux”, 1)’)
cur.execute(‘SELECT * FROM testable’)
for each in cur.fetchall():
print each
cur.close()
cxn.commit()
cxn.close()
#####################################################################
postgresql
#####################################################################
需要安裝postgresql資料庫,同時要安裝python的API,有三個可用介面:
1. psycopg2
2. PyPgSQL
3. PyGreSQL
import psycopg2
cxn =
psycopg2.connect([database="postgres",]user="postgres",password=“*”)
cur = cxn.cursor()
cur.execute(‘SELECT * FROMpg_database’)
rows = cur.fetchall()
for i in rows:
print i
cur.close()
cxn.commit()
cxn.close()
#####################################################################
mysql
#####################################################################
需要安裝mysql資料庫,同時安裝python的API,MySQLdb,也叫MySQL-python。
mysql的msqldb的connect有query屬性。
import MySQLdb
cxn = MySQLdb.connect([db=‘mysql‘,]user=’root’,passwd=’*’)
cxn.query(‘CREATE DATABASEdatabasename’)
cxn.query(“GRANT ALL ONdatabasename.* to ‘’@’localhost’”)
…
cxn.commit()
cxn.close()
使用cursor:
cxn = MySQLdb.connect([db=‘mysql‘,]user=’root’,passwd=’*’)
cur = cxn.cursor()
cur.execute(‘CREATE TABLEtablename(var1 VARCHAR(8), var2 INT)’)
cur.execute(“INSERT INTOtablename VALUES(‘canux’, 1)”)
cur.execute(“SELECT * FROMtablename”)
for data in cur.fetchall():
print ‘%s\t%s’ % data
cur.execute(‘UPDATE tablenameSET val2=2 WHERE var1=”canux”’)
cur.execute(‘DELETE FROMtablename WHERE var1=”canux”’)
cur.execute(‘DROP TABLEtablename’)
cur.close()
cxn.commit()
cxn.close()
#####################################################################
python: 資料庫編程