1. 程式人生 > 實用技巧 >python 讀寫sql2008 類

python 讀寫sql2008 類

import pymssql
class MSSQL:
    def __init__(self,host,user,pwd,db):
        self.host = host
        self.user = user
        self.pwd = pwd
        self.db = db

    def __GetConnect(self):
        if not self.db:
            raise(NameError,"沒有設定資料庫資訊")
        try:
            self.conn = pymssql.connect(host=self.host,user=self.user,password=self.pwd,database=self.db,charset="
utf8") #self.conn = pymssql.connect(self.host,self.user,self.pwd,self.db) cur = self.conn.cursor() except Exception as e: print(e) if not cur: raise(NameError,"連線資料庫失敗") else: return cur # 執行查詢語句 def ExecQuery(self,sql): cur
= self.__GetConnect() cur.execute(sql) resList = cur.fetchall() #查詢完畢後必須關閉連線 self.conn.close() return resList # 執行非查詢語句 def ExecNonQuery(self,sql): cur = self.__GetConnect() cur.execute(sql) self.conn.commit() self.conn.close()
# 進行資料插入 def insert(self, tablename, params): """建立資料庫表 args: tablename :表名字 key :屬性鍵 value :屬性值 """ key = [] value = [] for tmpkey, tmpvalue in params.items(): key.append(tmpkey) if isinstance(tmpvalue, str): value.append("\'" + tmpvalue + "\'") else: value.append(tmpvalue) try: attrs_sql = '(' + ','.join(key) + ')' values_sql = ' values(' + ','.join(value) + ')' except Exception as e: None # print(e) #print("****************************") sql = 'insert into %s'%tablename sql = sql + attrs_sql + values_sql print('_insert:'+sql) try: self.ExecNonQuery(sql) except Exception as e: None # print(e) if __name__ == "__main__": ms = MSSQL(host="MY-PC\SQLEXPRESS",user="sa",pwd="*********",db="sqlTest") #ms = MSSQL("127.0.0.1","sa","*********","sqlTest") reslist = ms.ExecQuery("select * from student") for i in reslist: print(i) reslist = ms.ExecQuery("select name from student") for i in reslist: print(i) newsql="update student set name='%s' where id=1"%u'蘇銘' print(newsql) ms.ExecNonQuery(newsql.encode('utf-8')) newsql="delete from student where name='Python測試2'" print(newsql) ms.ExecNonQuery(newsql.encode('utf-8')) newsql="insert into student (Name) values ('Python測試2')" print(newsql) ms.ExecNonQuery(newsql.encode('utf-8')) ms.insert('student',{'name':'lii'})#插入資料(指明表名稱,欄位名,欄位內容對應的字典形式輸入