프로젝트

일반

사용자정보

통계
| 브랜치(Branch): | 개정판:

hytos / DTI_PID / DTI_PID / SG_DbHelper.py @ 0f4a186f

이력 | 보기 | 이력해설 | 다운로드 (6.35 KB)

1
import sqlite3
2
import os
3
import sys
4
import symbol
5
import SymbolBase
6
from sqlite3 import Error
7

    
8
class SG_DbHelper():
9
    ROOT_DIR = ""
10
    DB_PATH = "db"
11
    DB_NAME = "ITI_PID.db"
12
    
13
    CREATE_SYMBOLS_TABLE_SQL = '''
14
        CREATE TABLE IF NOT EXISTS 'Symbol' (
15
            'uid'        INTEGER PRIMARY KEY AUTOINCREMENT,
16
                'symId'        INTEGER NOT NULL,
17
                'name'        TEXT NOT NULL,
18
                'type'        TEXT,
19
                'threshold'        NUMERIC NOT NULL DEFAULT 0.4,
20
                'minMatchPoint'        INTEGER NOT NULL DEFAULT 0,
21
                'isDetectOrigin'        INTEGER NOT NULL DEFAULT 0,
22
                'rotationCount'        INTEGER NOT NULL DEFAULT 4,
23
                'ocrOption'        INTEGER NOT NULL DEFAULT 0,
24
                'isContainChild'        INTEGER NOT NULL DEFAULT 0,
25
                'originalPoint'        TEXT,
26
                'connectionPoint'        TEXT,
27
                'baseSymbol'        TEXT,
28
                'additionalSymbol'        TEXT
29
        );
30
    '''
31
    #CREATE_SYMBOLS_TABLE_SQL = '''
32
    #    CREATE TABLE 'Symbol' (
33
    #        'uid'        INTEGER PRIMARY KEY AUTOINCREMENT,
34
           #     'symId'        INTEGER NOT NULL,
35
           #     'name'        TEXT NOT NULL,
36
           #     'type'        TEXT,
37
           #     'path'        TEXT,
38
           #     'threshold'        NUMERIC NOT NULL DEFAULT 0.4,
39
           #     'minMatchPoint'        INTEGER NOT NULL DEFAULT 0,
40
           #     'isDetectOrigin'        INTEGER NOT NULL DEFAULT 0,
41
           #     'rotationCount'        INTEGER NOT NULL DEFAULT 4,
42
           #     'ocrOption'        INTEGER NOT NULL DEFAULT 0,
43
           #     'isContainChild'        INTEGER NOT NULL DEFAULT 0,
44
           #     'originalPoint'        TEXT,
45
           #     'connectionPoint'        TEXT,
46
           #     'baseSymbol'        TEXT,
47
           #     'additionalSymbol'        TEXT
48
    #    );
49
    #'''
50
    
51
    INSERT_SYMBOL_SQL = '''
52
        INSERT INTO Symbol(symId, name, type, threshold, minMatchPoint, isDetectOrigin, rotationCount, ocrOption, isContainChild, originalPoint, connectionPoint, baseSymbol, additionalSymbol) 
53
        VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);
54
    '''
55
    #INSERT_SYMBOL_SQL = '''
56
    #    INSERT INTO Symbol(symId, name, type, path, threshold, minMatchPoint, isDetectOrigin, rotationCount, ocrOption, isContainChild, originalPoint, connectionPoint, baseSymbol, additionalSymbol) 
57
    #    VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);
58
    #'''
59
    
60
    UPDATE_SYMBOL_SQL = '''
61
        UPDATE Symbol
62
        SET
63
            symId = ?, name = ?, type = ?, threshold = ?, minMatchPoint = ?, isDetectOrigin = ?,
64
            rotationCount = ?, ocrOption = ?, isContainChild = ?, originalPoint = ?, connectionPoint = ?,
65
            baseSymbol = ?, additionalSymbol = ?
66
        WHERE uid = ?
67
    '''
68
    #UPDATE_SYMBOL_SQL = '''
69
    #    UPDATE Symbol
70
    #    SET
71
    #        symId = ?, name = ?, type = ?, path = ?, threshold = ?, minMatchPoint = ?, isDetectOrigin = ?,
72
    #        rotationCount = ?, ocrOption = ?, isContainChild = ?, originalPoint = ?, connectionPoint = ?,
73
    #        baseSymbol = ?, additionalSymbol = ?
74
    #    WHERE uid = ?
75
    #'''
76

    
77
    def __init__(self, rootDir):
78
        print("DB Helper __init__")
79
        self.ROOT_DIR = rootDir
80
        
81
        self.dbFullPath = self.ROOT_DIR+"/"+self.DB_PATH+"/"+self.DB_NAME
82
        #if not os.path.isfile(dbFullPath):
83
        #    print("DB doesn't exist")
84

    
85
        try:
86
            conn = sqlite3.connect(self.dbFullPath)
87
            print(sqlite3.version)
88
            
89
            cursor = conn.cursor()
90
            cursor.execute(self.CREATE_SYMBOLS_TABLE_SQL)
91
        except Error as e:
92
            print(e)
93
        finally:
94
            conn.close()
95

    
96
    def isExistData(self, fieldName, data):
97
        rows = None
98
        try:
99
            conn = sqlite3.connect(self.dbFullPath)
100
            cursor = conn.cursor()
101
            sql = ""
102
            if isinstance(data, str):
103
                sql = "SELECT * FROM Symbol WHERE " + fieldName + " = '"+ data +"'"
104
            else:
105
                sql = "SELECT * FROM Symbol WHERE " + fieldName + " = "+ str(data) +""
106
            cursor.execute(sql)
107
            rows = cursor.fetchall()
108
        except Error as e:
109
            print(e)
110
        finally:
111
            conn.close()
112
            if rows is not None and len(rows) > 0:
113
                return True
114
            else:
115
                return False
116

    
117
    def isExistFileName(self, imageDir):
118
        rows = None
119
        try:
120
            conn = sqlite3.connect(self.dbFullPath)
121
            cursor = conn.cursor()
122
            sql = "SELECT * FROM Symbol WHERE path = '"+ imageDir +"'"
123
            cursor.execute(sql)
124
            rows = cursor.fetchall()
125
        except Error as e:
126
            print(e)
127
        finally:
128
            conn.close()
129
            if rows is not None and len(rows) > 0:
130
                return True
131
            else:
132
                return False
133

    
134
    def insertSymbol(self, symbol):
135
        isAdded = False
136
        try:
137
            conn = sqlite3.connect(self.dbFullPath)
138
            
139
            cursor = conn.cursor()
140
            query = (symbol.getId(), symbol.getName(), symbol.getType(), symbol.getThreshold()
141
                           , symbol.getMinMatchCount(), symbol.getIsDetectOnOrigin(), symbol.getRotationCount()
142
                           , symbol.getOcrOption(), symbol.getIsContainChild()
143
                           , symbol.getOriginalPoint(), symbol.getConnectionPoint()
144
                           , symbol.getBaseSymbol(), symbol.getAdditionalSymbol())
145
            cursor.execute(self.INSERT_SYMBOL_SQL, query)
146
            conn.commit()
147
            isAdded = True
148
        except Error as e:
149
            print(e)
150
        finally:
151
            conn.close()
152
            return (isAdded, symbol.getType(), symbol.getName(), symbol.getPath())
153
        
154
    def updateSymbol(self, symbol):
155
        isUpdated = False
156
        try:
157
            conn = sqlite3.connect(self.dbFullPath)
158
            
159
            cursor = conn.cursor()
160
            query = (symbol.getId(), symbol.getName(), symbol.getType(), symbol.getThreshold()
161
                           , symbol.getMinMatchCount(), symbol.getIsDetectOnOrigin(), symbol.getRotationCount()
162
                           , symbol.getOcrOption(), symbol.getIsContainChild()
163
                           , symbol.getOriginalPoint(), symbol.getConnectionPoint()
164
                           , symbol.getBaseSymbol(), symbol.getAdditionalSymbol(), symbol.getUid())
165
            cursor.execute(self.UPDATE_SYMBOL_SQL, query)
166
            conn.commit()
167
            isUpdated = True
168
        except Error as e:
169
            print(e)
170
        finally:
171
            conn.close()
172
            return (isUpdated, symbol.getType(), symbol.getName(), symbol.getPath())
클립보드 이미지 추가 (최대 크기: 500 MB)