• python 3 简单线程、数据库操、Mssql访问示例


    '''
    Tested:
        Python 3.3.0
        Microsoft SQL Server 2008
    '''

    import time
    import random
    import adodbapi
    import threading

    '''
        简单定时器类
    '''
    class Timer(threading.Thread):
        def __init__(self,fn,args=(),sleep = 0):
            threading.Thread.__init__(self)
            self.fn = fn
            self.args = args
            self.interval = sleep
            self.setDaemon(True)
            self.enable = True
            self.running = False

        def __do(self):
            self.running = True
            self.fn(*self.args)
            self.running = False

        def run(self):
            while self.enable :
                time.sleep(self.interval)
                self.__do()

        def stop(self):
            #stop the loop
            self.enable = False
            while True:
                if not self.running : break
                time.sleep(0.01)

    '''
        简单数据库访问类
    '''
    class DbHelper:
        def __init__(self,conn):
            self.conn = conn;
            try:
                self.connect = adodbapi.connect(conn,120)
                self.cursor = self.connect.cursor();
            except EnvironmentError as err:
                print('connection failure:' + err);

        def getConn(self):
            return self.conn;

        def getDbTime(self):
            self.cursor.execute("select getdate()");
            daterow = self.cursor.fetchone();
            return str(daterow[0]);

        def execNoResult(self,sql):
            self.cursor.execute(sql);
            self.connect.commit();

        def getExecResult(self,sql):
            self.cursor.execute(sql)
            return self.cursor.fetchall();

        def closeConn(self):
            try:
                self.cursor.close();
                self.connect.commit();
                self.connect.close();
            except EnvironmentError as err:
                print('close connection failure:' + err);

    def getConnection():
        dbprov = 'SQLOLEDB' # ADO can use OLE
        dbserv = '192.168.1.118,1433'
        dbuser = 'sa'
        dbpwd = 'pwd'
        dbname = 'water'
        return  'Provider=%s;Data Source=%s;Initial Catalog=%s;User ID=%s;Password=%s;' % (dbprov, dbserv, dbname, dbuser, dbpwd )

    def updateRawData():
        dbClass = DbHelper(getConnection());

        try:
            for row in dbClass.getExecResult("select * from rawdata"):
                dbClass.execNoResult("update rawdata set value='{0}',proc_date=getdate() where pos='{1}'".format( "%.2f" % random.uniform(0,20),row[0]));
            print("update success->" + dbClass.getDbTime());
            dbClass.closeConn();
        except EnvironmentError as err:
            print('connection failure:' + err);

    Timer(updateRawData,sleep=5).run()
  • 相关阅读:
    VB.NET导出excel并支持中文文件名 中文编码
    后台弹框。刷新不提示确认VB或.NET
    VB.NET读取保存项目中相对路径的XML
    禁止删除表里所有数据
    验证视图状态 MAC 失败的解决办法
    Flash OBJECT IIS7.0上传文件限制的解决方法
    jquery导航菜单上下都行,可以上弹也可以下拉,方便配置使用
    android开发环境之ADT安装,卸载,更新 ADT在线代理网址
    原创 C# 正则表达式 读写 Ini 文件
    原创C# 枚举 多状态 操作
  • 原文地址:https://www.cnblogs.com/zhangpengshou/p/2873250.html
Copyright © 2020-2023  润新知