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

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
12下一頁
最近訪問板塊 發(fā)新帖
查看: 11827 | 回復(fù): 13
打印 上一主題 下一主題

Python學(xué)習(xí)筆記(pymssql數(shù)據(jù)庫操作) [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2008-09-08 20:18 |只看該作者 |倒序瀏覽
因為公司使用的MSSQL2005,所以我是通過pymssql來連接的。沒什么好多說的,把可能用到的數(shù)據(jù)庫操作方式都總結(jié)如下,如果要用的時候就備查啦。
#!/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 長連接查詢操作(逐條方式獲取數(shù)據(jù)),這個我不能肯定,還請各位看官確認(rèn)一下,有空我在具體測試一下。
    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(在插入一個值,希望獲得主鍵的時候經(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]#不知道具體的做法,目前暫時這樣使用
    conn.commit()
    #Update
    sql = 'update pcontent set title = %s where id=1'
    cur.execute(sql,(str(datetime.datetime.today()),))
    conn.commit()
    #參數(shù)化查詢這個是為了避免SQL攻擊的
    sql = "select * from pcontent where id=%d"
    cur.execute(sql,(1,))
    print cur.fetchall()
    # 調(diào)用存儲過程SP_GetALLContent 無參數(shù)
    sql = "Exec SP_GetALLContent"
    cur.execute(sql)
    print cur.fetchall()
    # 調(diào)用存儲過程SP_GetContentByID 有參數(shù)的
    sql = "Exec SP_GetContentByID %d"
    cur.execute(sql,(3,))
    print cur.fetchall()
    #調(diào)用存儲過程SP_AddContent 有output參數(shù)的(很不優(yōu)雅的方式)
    sql = "DECLARE @ID INT;EXEC SP_AddContent 'ddddd',@ID OUTPUT;SELECT @ID"
    cur.execute(sql)
    print cur._result


附件是寫的DEMO代碼

pymysqlDemo(2).rar

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

DEMO

論壇徽章:
0
2 [報告]
發(fā)表于 2008-09-08 20:53 |只看該作者
re

論壇徽章:
0
3 [報告]
發(fā)表于 2008-09-09 09:04 |只看該作者
感謝分享。
運(yùn)用到了with,不錯。

論壇徽章:
0
4 [報告]
發(fā)表于 2008-09-09 11:37 |只看該作者
Good....

論壇徽章:
0
5 [報告]
發(fā)表于 2008-09-09 12:43 |只看該作者
用with怎么獲取異常呢?把整個都放在try里?

論壇徽章:
0
6 [報告]
發(fā)表于 2008-09-09 13:23 |只看該作者
原帖由 jjj137 于 2008-9-9 12:43 發(fā)表
用with怎么獲取異常呢?把整個都放在try里?


樓主程序開頭部分有一個: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()

可以看出兩個差不多雷同把。

論壇徽章:
0
7 [報告]
發(fā)表于 2008-09-09 15:58 |只看該作者
我問的是expect IOError應(yīng)該寫在哪里。

論壇徽章:
0
8 [報告]
發(fā)表于 2008-09-09 16:03 |只看該作者
>>> try:
...     with open('d:/tt.txt','r') as a:
...             print 'aaaa'
... except:
...     print 'dddddddddd'
...

貌似只能這樣老辦法了。

論壇徽章:
0
9 [報告]
發(fā)表于 2008-09-09 16:05 |只看該作者
暈,那如果代碼塊其他地方出現(xiàn)IOError就分辨不出來了……

論壇徽章:
0
10 [報告]
發(fā)表于 2008-09-09 16:52 |只看該作者

回復(fù) #7 jjj137 的帖子

這個我到?jīng)]想過,我嘗試一下。就是希望把異常信息捕獲到.
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP