本文實例講述了Python連接SQLServer2000的方法。分享給大家供大家參考,具體如下:
http://pymssql.sourceforge.net/ 介紹PYTHON 連接MSSQL的好地址的哦!
Python好的一個方法就是能夠在網上找到很多現成的模塊然后直接下載拿過來用就可以了。具體快速開發的一個原因也就是這個了?,F在就是主要來研究一個pymssql這個模塊的操作功能了!
可以安裝之后直接查詢幫助文檔進行查看到這個模塊的一些功能幫助文檔。
1.一個解決亂碼問題的方法:
s.decode('gbk', 'ignore')比如,若要將某個String對象s從gbk內碼轉換為UTF-8,可以如下操作
s.decode('gbk').encode('utf-8')可是,在實際開發中,我發現,這種辦法經常會出現異常:
UnicodeDecodeError: 'gbk' codec can't decode bytes in position 30664-30665: illegal multibyte sequence
這是因為遇到了非法字符――尤其是在某些用C/C++編寫的程序中,全角空格往往有多種不同的實現方式,比如/xa3/xa0,或者/xa4/x57,這 些字符,看起來都是全角空格,但它們并不是“合法”的全角空格(真正的全角空格是/xa1/xa1),因此在轉碼的過程中出現了異常。
幸運的是,tiny找到了完美的解決辦法(我因此被批評看文檔不仔細,汗啊……)
s.decode('gbk', 'ignore').encode('utf-8')因為decode的函數原型是decode([encoding], [errors='strict']),可以用第二個參數控制錯誤處理的策略,默認的參數就是strict,代表遇到非法字符時拋出異常;
如果設置為ignore,則會忽略非法字符;
如果設置為replace,則會用?取代非法字符;
如果設置為xmlcharrefreplace,則使用XML的字符引用。
這個方法幫助確實 是相當大的哦。對于那種在數據庫中存儲了全角與半角的非法字符的問題可以這樣來進行解決處理的哦!
字符編碼問題永遠是一個讓人頭疼的問題哈哈!
2.http://www.python.org/dev/peps/pep-0249/
上面提供了Python-DBAPI的常用操作功能。
總結出來相關的API操作方法:
3.總結出來Python連接數據庫的一般程序過程是這樣來寫的:
第一步:導入相關的模塊
其中MYSQL:
import MySQLdb
其中MSSQL:
import pymssql
第二步:打開連接
其中MYSQL:
conn = MySQLdb.connect(self.dbhost,self.dbuser,self.dbpasswd,self.database)
其中MSSQL:
conn = pymssql.connect(host=self.dbhost,user=self.dbuser,password=self.dbpasswd,database=self.database)
[通過本身的函數原型來定義出來這個方法的]
第三步:連接完了之后就要開始創建一個cursor了。通過這個對象來對數據庫發送一個請求操作。
代碼:
curs = conn.cursor()
相當于JAVA中的Statement對象一樣的。通過語句來進行提交SQL命令的
第四步:開始發送SQL命令到數據庫服務器了,可以這樣來做
curs.execute(SQL)
例如:
curs.execute("select * from test")其中的SQL命令可以是任意的SQL語句 可以是執行INSERT 操作或DELETE操作也可以是SELECT操作的
要注意到 執行完了之后要進行commit()提交一次的。
例如:
cursor.execute("insert into test(id) values(1)")如果是執行了SELECT操作的話就要進行第五步操作了:
第五步:
curs.execute("select * from test")rows = curs.fetchall()其中的fetchall()只是我們的cursor對象的一個方法而已的。
現在就可以提取出來相關信息了
for i in range(len(rows)): print "Row",i,"name",rows[i][0],"value",rows[i][1]
看我寫的代碼:
def test(self): conn = self.connect() sql="select * from bbs where id<20" curs = conn.cursor() #得到一個游標對象 curs.execute(sql) #執行一個SQL語句 rows=curs.fetchall() #得到全部的查詢結果集 for i in range(len(rows)): # print "Row",i,"name",rows[i][3],"value",rows[i][4] conn.close()
我明白了:通過這樣的方法的話 得到的一行記錄其實是一個元組的數據結構的。
要取其中的一個可以用一個類似兩維數組的方法進行查詢出來的。
rows[1][0]:表示第一條記錄中的第一個位置的值的。
然后再來看看 將其從數據庫中提取出來之后進行編碼處理與解碼處理
for i in range(len(rows)): print rows[i][4].decode('gb2312', 'ignore').encode('gb2312')以后操作數據庫的話就可以直接這樣來寫代碼的了!
http://pymssql.sourceforge.net/userguide.html 有詳細的幫助說明文檔的
更多關于Python相關內容感興趣的讀者可查看本站專題:《Python常見數據庫操作技巧匯總》、《Python編碼操作技巧總結》、《Python圖片操作技巧總結》、《Python數據結構與算法教程》、《Python Socket編程技巧總結》、《Python函數使用技巧總結》、《Python字符串操作技巧匯總》、《Python入門與進階經典教程》及《Python文件與目錄操作技巧匯總》
希望本文所述對大家Python程序設計有所幫助。
新聞熱點
疑難解答
圖片精選