資料庫的操作在現在的python裡面已經變得十分的好用,有了一套api標準.下面的就是講講如何的去使用這套框架定義.此框架包含以下部分
connect(parameters...) 其中的引數格式如下:
dsn 資料來源名稱此標準規定了以下的一些全域性變數:user 使用者名稱(可選)
password 密碼(可選)
host 主機名(可選)
database 資料庫名(可選)
舉個例子:
connect(dsn='myhost:mydb',user='guido',password='234
apilevel:表示了db-api的版本,分'1.0'和'2.0'.如果沒有定義,預設為'1.0'
threadsafety:
0 threads may not share the module.1 threads may share the module, but not connections.
2 threads may share the module and connections.
3 threads may share the module, connections and cursors.
paramstyle:用於表示引數的傳遞方法,分為以下五種:異常類:standarderror'qmark' 問號標識風格. e.g '... where name=?'
'numeric' 數字,佔位符風格. e.g '... where name=:1'
'named' 命名風格. e.g 'where name=:name'
'format' ansi c printf風格. e.g '... where name=%s'
'pyformat' python擴充套件表示法. e.g '... where name=%(name)s'
|__warning
|__error
|__inte***ceerror
|__databaseerror
|__dataerror
|__operationalerror
|__integerityerror
|__internalerror
|__programmingerror
|__notsupportederror
連線物件包含如下方法:
.close()
關閉連線
.commit()
用於事務處理裡面的提交操作
.rollback()
用於事務處理裡面的回滾操作
.cursor()
獲得乙個游標
游標物件包含如下屬性和方法:
.description
乙個列表(name,type_code,display_size,internal_size,precision,scale,null_ok) 此屬性只有在取得了資料之後才有,不然會是null值
.rowcount
表示返回值的行數.如果沒有執行execute***()方法或者此模組沒有實現這個方法,就會返回-1
.callproc(procname[,parameters])
(此為可選方法,應為不是所有的資料庫都支援儲存過程的)
.close()
關閉游標
.execute(operation[,parameters])
準備並執行乙個資料庫操作(包括查詢和命令)
.executemany(operation,seq_of_parameters)
準備乙個資料庫命令,然後根據引數執行多次命令
.fetchone()
返回第一行的查詢結果
.fetchmany([size=cursor.arraysize])
返回指定個多個行的值
.fetchall()
返回所有的查詢結果
.arraysize
這個引數值表示fetchmany預設情況之下獲取的行數
定義一些常用的資料型別.但是目前用不到,就先不分析當然,我們要知道的是,這個只是乙個標準,一般來說標準裡面定義了的會實現,但還有很多特定的實現,我們也需要去掌握哪些東西,不過如果我們將這些標準的掌握了,那麼操作一般的就不會有問題了.
database topic guide
python的資料庫使用嚮導,有相當不錯的資料,包括api定義,驅動聯結等等
sql/">mssql 驅動
就是mssql的驅動程式
下面舉的例子是以mssql為樣板的,但是換成其他的驅動也一樣可以做,這個就和perl的資料庫操作十分的類似,可以讓我們很方便的實現不同資料庫之間的移植工作.
1. 查詢資料
import mssql
db = mssql.connect('sql server ip', 'username', 'password', 'db_name')sql = 'insert into detail values('192.168.0.1', 'www.dns.com.cn')c = db.cursor()
sql = 'select top 20 rtrim(ip), rtrim(dns) from detail'
c.execute(sql)
for f in c.fetchall():
print "ip is %s, dns is %s" % (f[0], f[1])
2. 插入資料
c.execute(sql)
3. odbc的乙個例子
import dbi, odbc # odbc modules
import time # standard time module
dbc = odbc.odbc( # open a database connection
'sample/monty/spam' # 'datasource/user/password'
)crsr = dbc.cursor() # create a cursor
crsr.execute( # execute some sql
"""select country_id, name, insert_change_date
from country
order by name
""")
print 'column descriptions:' # show column descriptions
for col in crsr.description:
print ' ', col
result = crsr.fetchall() # fetch the results all at once
print '/nfirst result row:/n ', result[0] # show first result row
print '/ndate conversions:' # play with dbidate object
date = result[0][-1]
fmt = ' %-25s%-20s'
print fmt % ('standard string:', str(date))
print fmt % ('seconds since epoch:', float(date))
timetuple = time.localtime(date)
print fmt % ('time tuple:', timetuple)
print fmt % ('user defined:', time.strftime('%d %b %y', timetuple))
-------------------------------output--------------------------------
column descriptions:
('country_id', 'number', 12, 10, 10, 0, 0)
('name', 'string', 45, 45, 0, 0, 0)
('insert_change_date', 'date', 19, 19, 0, 0, 1)
first result row:
(24l, 'argentina', )
date conversions:
standard string: fri dec 19 01:51:53 1997
seconds since epoch: 882517913.0
time tuple: (1997, 12, 19, 1, 51, 53, 4, 353, 0)
user defined: 19 december 1997
python 運算元據庫
目的 通過excel定義檢查指標項,然後通過python讀取指標,通過oracle sqlplus工具去執行獲取具體巡檢結果。unicode utf 8 coding utf 8 import os import sys import xlrd import paramiko reload sys ...
python運算元據庫
python運算元據庫都是通過資料庫驅動取操作的。現在主要有兩張,一種是通過pymysql,還有一種是通過sqlalchemy。在這裡可能還會有人說還有mysqldb模組也可以操作。確實是的,但是mysqldb對python3已經不支援了,所以這裡我就不討論了。第一種pymysql pymysql幫...
python 運算元據庫
安裝第三方模組 pip install pymysql 資料處理流程 程式結構 python程式 mysql資料庫 引入依賴的模組 建立乙個連線mysql資料庫的連線物件通過連線物件獲得乙個操作sql語句的游標物件定義sql語句 通過游標物件執行sql語句 處理執行結果 關閉和資料庫的連線 實踐操作...