亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標(biāo)題: Python學(xué)習(xí)筆記(pymssql數(shù)據(jù)庫(kù)操作) [打印本頁(yè)]

作者: pumaboyd    時(shí)間: 2008-09-08 20:18
標(biāo)題: Python學(xué)習(xí)筆記(pymssql數(shù)據(jù)庫(kù)操作)
因?yàn)楣臼褂玫腗SSQL2005,所以我是通過(guò)pymssql來(lái)連接的。沒(méi)什么好多說(shuō)的,把可能用到的數(shù)據(jù)庫(kù)操作方式都總結(jié)如下,如果要用的時(shí)候就備查啦。
#!/usr/bin/env python
#coding=utf-8
from __future__ import with_statement
from contextlib import closing
import inspect
import pymssql
import uuid
import datetime
#查詢操作
with closing(pymssql.connect(host='localhost',user='sa',password='ssss',database='blogs')) as conn :
    cur = conn.cursor()
    #SELECT 長(zhǎng)連接查詢操作(逐條方式獲取數(shù)據(jù)),這個(gè)我不能肯定,還請(qǐng)各位看官確認(rèn)一下,有空我在具體測(cè)試一下。
    sql = "select * from pcontent"
    cur.execute(sql)
    for i in range(cur.rowcount):
        print cur.fetchone()
    #SELECT 短鏈接查詢操作(一次查詢將所有數(shù)據(jù)取出)
    sql = "select * from pcontent"
    cur.execute(sql)
    print cur.fetchall()
    #INSERT
    sql = "INSERT INTO pcontent(title)VAlUES(%s)"
    uuidstr = str(uuid.uuid1())
    cur.execute(sql,(uuidstr,))
    conn.commit()
    print cur._result
    #INSERT 獲取IDENTITY(在插入一個(gè)值,希望獲得主鍵的時(shí)候經(jīng)常用到,很不優(yōu)雅的方式)
    sql = "INSERT INTO pcontent(title)VAlUES(%s);SELECT @@IDENTITY"
    uuidstr = str(uuid.uuid1())
    cur.execute(sql,(uuidstr,))
    print "arraysite:",cur.arraysize
    print cur._result[1][2][0][0]#不知道具體的做法,目前暫時(shí)這樣使用
    conn.commit()
    #Update
    sql = 'update pcontent set title = %s where id=1'
    cur.execute(sql,(str(datetime.datetime.today()),))
    conn.commit()
    #參數(shù)化查詢這個(gè)是為了避免SQL攻擊的
    sql = "select * from pcontent where id=%d"
    cur.execute(sql,(1,))
    print cur.fetchall()
    # 調(diào)用存儲(chǔ)過(guò)程SP_GetALLContent 無(wú)參數(shù)
    sql = "Exec SP_GetALLContent"
    cur.execute(sql)
    print cur.fetchall()
    # 調(diào)用存儲(chǔ)過(guò)程SP_GetContentByID 有參數(shù)的
    sql = "Exec SP_GetContentByID %d"
    cur.execute(sql,(3,))
    print cur.fetchall()
    #調(diào)用存儲(chǔ)過(guò)程SP_AddContent 有output參數(shù)的(很不優(yōu)雅的方式)
    sql = "DECLARE @ID INT;EXEC SP_AddContent 'ddddd',@ID OUTPUT;SELECT @ID"
    cur.execute(sql)
    print cur._result


附件是寫(xiě)的DEMO代碼

pymysqlDemo(2).rar

1 KB, 下載次數(shù): 177

DEMO


作者: 23號(hào)    時(shí)間: 2008-09-08 20:53
re
作者: xiaoyu9805119    時(shí)間: 2008-09-09 09:04
感謝分享。
運(yùn)用到了with,不錯(cuò)。
作者: mrshelly    時(shí)間: 2008-09-09 11:37
Good....
作者: jjj137    時(shí)間: 2008-09-09 12:43
用with怎么獲取異常呢?把整個(gè)都放在try里?
作者: xiaoyu9805119    時(shí)間: 2008-09-09 13:23
原帖由 jjj137 于 2008-9-9 12:43 發(fā)表
用with怎么獲取異常呢?把整個(gè)都放在try里?


樓主程序開(kāi)頭部分有一個(gè):from contextlib import closing
>>> help(closing)

|  Code like this:
|
|      with closing(<module>.open(<arguments>)) as f:
|          <block>
|
|  is equivalent to this:
|
|      f = <module>.open(<arguments>)
|      try:
|          <block>
|      finally:
|          f.close()

可以看出兩個(gè)差不多雷同把。
作者: jjj137    時(shí)間: 2008-09-09 15:58
我問(wèn)的是expect IOError應(yīng)該寫(xiě)在哪里。
作者: xiaoyu9805119    時(shí)間: 2008-09-09 16:03
>>> try:
...     with open('d:/tt.txt','r') as a:
...             print 'aaaa'
... except:
...     print 'dddddddddd'
...

貌似只能這樣老辦法了。
作者: jjj137    時(shí)間: 2008-09-09 16:05
暈,那如果代碼塊其他地方出現(xiàn)IOError就分辨不出來(lái)了……
作者: pumaboyd    時(shí)間: 2008-09-09 16:52
標(biāo)題: 回復(fù) #7 jjj137 的帖子
這個(gè)我到?jīng)]想過(guò),我嘗試一下。就是希望把異常信息捕獲到.
作者: nicsky    時(shí)間: 2008-09-11 16:26
學(xué)習(xí)中。。。。。。。。。。
作者: pumaboyd    時(shí)間: 2008-09-12 05:11
#4,我查了一下漠視with沒(méi)辦法捕獲異常。但我想也不一定需要吧。c#的using也不會(huì)去捕獲錯(cuò)誤的。像WEB程序,一般有一個(gè)統(tǒng)一的錯(cuò)誤處理模塊,這是框架支持的。我不知道python的dijingo是否支持,而不用在代碼級(jí)別上,每一個(gè)地方都去處理異常
作者: appletian520    時(shí)間: 2008-09-24 15:36
基本上無(wú)法準(zhǔn)確的判斷異常。
測(cè)試過(guò)很多次。
程序處于長(zhǎng)時(shí)間的等待!
作者: jianpx    時(shí)間: 2009-03-29 22:59
原帖由 xiaoyu9805119 于 2008-9-9 09:04 發(fā)表
感謝分享。
運(yùn)用到了with,不錯(cuò)。


with有什么用?




歡迎光臨 Chinaunix (http://www.72891.cn/) Powered by Discuz! X3.2