mySQLDBCtrlAPI 0.1.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
File without changes
|
|
@@ -0,0 +1,397 @@
|
|
|
1
|
+
#UTF-8 #-*- coding:
|
|
2
|
+
# ----------------------------------------------------------------------------
|
|
3
|
+
# MySQL 資料庫類別: CLASS_mySQLDBCtrl
|
|
4
|
+
# [使用範例]:
|
|
5
|
+
# ms_SQL = "SELECT * FROM ztbxtalk_reglist";
|
|
6
|
+
# self.CVobj_MyQuery = self.CVobj_mySQLDBCtrl.CUF_DB_OpenSQL(
|
|
7
|
+
# self.CVobj_Conn, ms_SQL);
|
|
8
|
+
# mi_RECCNT = self.CVobj_mySQLDBCtrl.CUF_DB_RecordCount(self.CVobj_MyQuery);
|
|
9
|
+
# print("Record count = "+ str(mi_RECCNT));
|
|
10
|
+
# while(not self.CVobj_mySQLDBCtrl.CUF_Eof(self.CVobj_MyQuery)):
|
|
11
|
+
# obj_DataSet = self.CVobj_mySQLDBCtrl.CUF_DB_FETCH(self.CVobj_MyQuery)
|
|
12
|
+
# print(obj_DataSet["SADDR"], " ", obj_DataSet["LOGIN_TIME"],
|
|
13
|
+
# obj_DataSet["IP_ADDR"], " ", obj_DataSet["APP_NAME"]);
|
|
14
|
+
# ----------------------------------------------------------------------------
|
|
15
|
+
|
|
16
|
+
import os
|
|
17
|
+
import pymysql as Gobj_pymysql
|
|
18
|
+
|
|
19
|
+
# --------------------------------------------------------------------------------
|
|
20
|
+
# 資料庫字元集
|
|
21
|
+
class ENUM_DB_CHARSET:
|
|
22
|
+
def __init__(self):
|
|
23
|
+
self.cE_DBCS_ascii = 1, # ascii US ASCII
|
|
24
|
+
self.cE_DBCS_big5 = 2, # big5 Big5 Traditional Chinese
|
|
25
|
+
self.cE_DBCS_binary = 3, # binary Binary pseudo charset
|
|
26
|
+
self.cE_DBCS_cp1250 = 4, # cp1250 Windows Central European
|
|
27
|
+
self.cE_DBCS_gb2312 = 5, # gb2312 GB2312 Simplified Chinese
|
|
28
|
+
self.cE_DBCS_gbk = 6, # gbk GBK Simplified Chinese
|
|
29
|
+
self.cE_DBCS_latin1 = 7, # latin1 cp1252 West European
|
|
30
|
+
self.cE_DBCS_latin2 = 8, # latin2 ISO 8859-2 Central European
|
|
31
|
+
self.cE_DBCS_latin5 = 9, # latin5 ISO 8859-9 Turkish
|
|
32
|
+
self.cE_DBCS_latin7 = 10, # latin7 ISO 8859-13 Baltic
|
|
33
|
+
self.cE_DBCS_utf16 = 11, # utf16 UTF-16 Unicode
|
|
34
|
+
self.cE_DBCS_utf16le = 12, # utf16le UTF-16LE Unicode
|
|
35
|
+
# --------------------------------------------------------------------------------
|
|
36
|
+
self.cE_DBCS_utf32 = 13, # utf32 UTF-32 Unicode
|
|
37
|
+
# --------------------------------------------------------------------------------
|
|
38
|
+
self.cE_DBCS_utf8mb3 = 14, # utf8mb3 UTF-8 Unicode
|
|
39
|
+
self.cE_DBCS_utf8mb4 = 15 # utf8mb4 UTF-8 Unicode
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
# ================================================================================
|
|
43
|
+
# define mySQLDBCtrl API structure
|
|
44
|
+
# ================================================================================
|
|
45
|
+
class STRU_mySQLDBInfo:
|
|
46
|
+
def __init__(self):
|
|
47
|
+
self.ms_DB_HostIP = "127.0.0.1";
|
|
48
|
+
self.mi_DB_Port = 3306;
|
|
49
|
+
self.ms_DB_Name = "";
|
|
50
|
+
self.ms_User = "";
|
|
51
|
+
self.ms_Password = "";
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
# ================================================================================
|
|
55
|
+
# CLASS_mySQLDBCtrl
|
|
56
|
+
# ================================================================================
|
|
57
|
+
class CLASS_mySQLDBCtrl:
|
|
58
|
+
def __init__(self):
|
|
59
|
+
self.CUms_DB_HostIP = '127.0.0.1';
|
|
60
|
+
self.CUmi_DB_Port = 3306;
|
|
61
|
+
self.CUms_DB_Name = '';
|
|
62
|
+
self.CUms_User = '';
|
|
63
|
+
self.CUms_Password = '';
|
|
64
|
+
# ------------------------------------------------------------
|
|
65
|
+
self.CVmi_qryRECCNT = 0;
|
|
66
|
+
# ------------------------------------------------------------
|
|
67
|
+
self.CVmsa_DBCS = ["ascii", "big5", "binary", "cp1250", \
|
|
68
|
+
"gb2312", "gbk", "latin1", "latin2", \
|
|
69
|
+
"latin5", "latin7", "utf16", "utf16le",\
|
|
70
|
+
"utf32", "utf8mb3", "utf8mb4"];
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
# ----------------------------------------------------------------------
|
|
74
|
+
# 功能: 設定資料庫 Charset
|
|
75
|
+
# 傳入: PmE_DB_Charset --> ENUM_DB_CHARSET
|
|
76
|
+
# 傳回: obj_Query
|
|
77
|
+
# ----------------------------------------------------------------------
|
|
78
|
+
def CUF_SET_Charset(self, PmE_DB_Charset):
|
|
79
|
+
if(self.CUobj_Conn != None and len(PmE_DB_Charset) > 0):
|
|
80
|
+
ms_SQL = "SET NAMES " + self.CVmsa_DBCS[PmE_DB_Charset[0]];
|
|
81
|
+
# ----------------------------------------
|
|
82
|
+
self.CUF_DB_ExecSQL(self.CUobj_Conn, ms_SQL);
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
# ----------------------------------------------------------------------
|
|
86
|
+
# 功能: 開啟 MySQL 資料庫
|
|
87
|
+
# 傳入:
|
|
88
|
+
# 傳回: obj_Query
|
|
89
|
+
# ----------------------------------------------------------------------
|
|
90
|
+
def CUF_OpenConnection_DBCS(self, Pms_DB_HostIP, Pmi_DB_Port, Pms_DB_Name, \
|
|
91
|
+
Pms_User, Pms_Password,
|
|
92
|
+
PmE_DB_CHARSET):
|
|
93
|
+
self.CUms_DB_HostIP = Pms_DB_HostIP;
|
|
94
|
+
self.CUmi_DB_Port = Pmi_DB_Port;
|
|
95
|
+
self.CUms_DB_Name = Pms_DB_Name;
|
|
96
|
+
self.CUms_User = Pms_User;
|
|
97
|
+
self.CUms_Password = Pms_Password;
|
|
98
|
+
# ----------------------------------------------------------------
|
|
99
|
+
try:
|
|
100
|
+
self.CUobj_Conn = Gobj_pymysql.connect(
|
|
101
|
+
host = self.CUms_DB_HostIP,
|
|
102
|
+
port = self.CUmi_DB_Port,
|
|
103
|
+
user = self.CUms_User,
|
|
104
|
+
password = self.CUms_Password,
|
|
105
|
+
db = self.CUms_DB_Name,
|
|
106
|
+
cursorclass= Gobj_pymysql.cursors.DictCursor);
|
|
107
|
+
except:
|
|
108
|
+
self.CUobj_Conn = None;
|
|
109
|
+
#------------------------------------------------------------
|
|
110
|
+
# 設定資料庫字元集
|
|
111
|
+
self.CUF_SET_Charset(PmE_DB_CHARSET)
|
|
112
|
+
#------------------------------------------------------------
|
|
113
|
+
return(self.CUobj_Conn);
|
|
114
|
+
# ======================================================================
|
|
115
|
+
def CUF_OpenConnection(self, Pms_DB_HostIP, Pmi_DB_Port, Pms_DB_Name, \
|
|
116
|
+
Pms_User, Pms_Password):
|
|
117
|
+
mE_DB_Charset = ENUM_DB_CHARSET();
|
|
118
|
+
# ------------------------------------------------------------
|
|
119
|
+
return(self.CUF_OpenConnection_DBCS(Pms_DB_HostIP, Pmi_DB_Port, \
|
|
120
|
+
Pms_DB_Name, Pms_User, \
|
|
121
|
+
Pms_Password, \
|
|
122
|
+
mE_DB_Charset.cE_DBCS_utf32));
|
|
123
|
+
# ======================================================================
|
|
124
|
+
def CUF_DB_OpenConn(self, Pstru_mySQLDBInfo):
|
|
125
|
+
self.CUobj_Conn.commit();
|
|
126
|
+
return(self.CUF_OpenConnection(Pstru_mySQLDBInfo.ms_DB_HostIP,
|
|
127
|
+
Pstru_mySQLDBInfo.mi_DB_Port,
|
|
128
|
+
Pstru_mySQLDBInfo.ms_DB_Name,
|
|
129
|
+
Pstru_mySQLDBInfo.ms_User,
|
|
130
|
+
Pstru_mySQLDBInfo.ms_Password));
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
# ----------------------------------------------------------------------
|
|
134
|
+
# 功能: 開啟 Pms_SQL 資料錄
|
|
135
|
+
# 傳入:
|
|
136
|
+
# 傳回: obj_Query
|
|
137
|
+
# ----------------------------------------------------------------------
|
|
138
|
+
def CUF_DB_OpenSQL(self, Pobj_Connection, Pms_SQL):
|
|
139
|
+
Pobj_Connection.commit();
|
|
140
|
+
# ------------------------------------------------------------
|
|
141
|
+
obj_Query = Pobj_Connection.cursor();
|
|
142
|
+
# ------------------------------------------------------------
|
|
143
|
+
obj_Query.execute(Pms_SQL);
|
|
144
|
+
# ------------------------------------------------------------
|
|
145
|
+
Pobj_Connection.commit();
|
|
146
|
+
# ------------------------------------------------------------
|
|
147
|
+
self.CVmi_qryRECCNT = self.CUF_DB_RecordCount(obj_Query);
|
|
148
|
+
# ------------------------------------------------------------
|
|
149
|
+
return(obj_Query);
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
# ----------------------------------------------------------------------
|
|
153
|
+
# 功能: 擷取資料錄
|
|
154
|
+
# 傳入:
|
|
155
|
+
# 傳回: obj_Field
|
|
156
|
+
# ----------------------------------------------------------------------
|
|
157
|
+
def CUF_DB_FETCH(self, Pobj_Query):
|
|
158
|
+
self.CVmi_qryRECCNT = self.CVmi_qryRECCNT - 1;
|
|
159
|
+
# ------------------------------------------------------------
|
|
160
|
+
return(Pobj_Query.fetchone());
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
# ----------------------------------------------------------------------
|
|
164
|
+
# 功能: 執行 Open SQL 命令
|
|
165
|
+
# 傳入:
|
|
166
|
+
# 傳回: obj_Field
|
|
167
|
+
# ----------------------------------------------------------------------
|
|
168
|
+
def CUF_DB_ExecSQL(self, Pobj_Connection, Pms_SQL):
|
|
169
|
+
obj_Query = Pobj_Connection.cursor();
|
|
170
|
+
# ------------------------------------------------------------
|
|
171
|
+
obj_Query.execute(Pms_SQL);
|
|
172
|
+
# ------------------------------------------------------------
|
|
173
|
+
Pobj_Connection.commit();
|
|
174
|
+
# ------------------------------------------------------------
|
|
175
|
+
return(obj_Query);
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
# ----------------------------------------------------------------------
|
|
179
|
+
# 功能: 取得資料錄筆數
|
|
180
|
+
# 傳入:
|
|
181
|
+
# 傳回: obj_Field
|
|
182
|
+
# ----------------------------------------------------------------------
|
|
183
|
+
def CUF_DB_RecordCount(self, Pobj_Query):
|
|
184
|
+
return(Pobj_Query.rowcount);
|
|
185
|
+
# ----------------------------------------------------------------------
|
|
186
|
+
def CUF_DB_RECCOUNT(self, Pobj_Query):
|
|
187
|
+
return(self.CUF_DB_RecordCount(Pobj_Query));
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
# ----------------------------------------------------------------------
|
|
191
|
+
# 功能: 執行 Open SQL 命令
|
|
192
|
+
# 傳入:
|
|
193
|
+
# 傳回: true: Eof
|
|
194
|
+
# ----------------------------------------------------------------------
|
|
195
|
+
def CUF_DB_Eof(self, Pobj_Query):
|
|
196
|
+
mB_RetVal = True;
|
|
197
|
+
# ------------------------------------------------
|
|
198
|
+
if(self.CVmi_qryRECCNT > 0):
|
|
199
|
+
mB_RetVal = False;
|
|
200
|
+
# ------------------------------------------------
|
|
201
|
+
return(mB_RetVal);
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
# ----------------------------------------------------------------------
|
|
205
|
+
# 功能: 執行 Open SQL 命令
|
|
206
|
+
# 傳入:
|
|
207
|
+
# 傳回: true: Eof
|
|
208
|
+
# Robj_DataSet: 資料集
|
|
209
|
+
# ----------------------------------------------------------------------
|
|
210
|
+
def CUF_Eof(self, Pobj_Query):
|
|
211
|
+
return(self.CUF_DB_Eof(Pobj_Query));
|
|
212
|
+
|
|
213
|
+
|
|
214
|
+
# ----------------------------------------------------------------------
|
|
215
|
+
# 功能: 讀取 BLOB Field
|
|
216
|
+
# 傳入:
|
|
217
|
+
# 傳回: true: Eof
|
|
218
|
+
# Pobj_Query: 資料集
|
|
219
|
+
# ----------------------------------------------------------------------
|
|
220
|
+
def CUF_GetBlobField(self, Pobj_Query, Pms_BlobFieldName, Pms_FileName):
|
|
221
|
+
if(Pobj_Query):
|
|
222
|
+
obj_DataSet = Pobj_Query.fetchone();
|
|
223
|
+
if(obj_DataSet is None):
|
|
224
|
+
return;
|
|
225
|
+
# --------------------------------------------------
|
|
226
|
+
obj_FileData = obj_DataSet[Pms_BlobFieldName];
|
|
227
|
+
# --------------------------------------------------
|
|
228
|
+
with open(Pms_FileName, "wb") as obj_FP:
|
|
229
|
+
obj_FP.write(obj_FileData);
|
|
230
|
+
|
|
231
|
+
|
|
232
|
+
# ----------------------------------------------------------------------
|
|
233
|
+
# 功能: 寫入 BLOB Field
|
|
234
|
+
# 傳入:
|
|
235
|
+
# 傳回: true: Eof
|
|
236
|
+
# Pobj_Query: 資料集
|
|
237
|
+
# ----------------------------------------------------------------------
|
|
238
|
+
def CUF_SetBlobField(self, Pobj_Query, Pms_TableName, Pms_QUERY, Pms_BlobFieldName, Pms_FileName):
|
|
239
|
+
ms_SQL :str;
|
|
240
|
+
mi_FileSize:int;
|
|
241
|
+
|
|
242
|
+
mi_FileSize = os.path.getsize(Pms_FileName);
|
|
243
|
+
if(mi_FileSize > 4200000000):
|
|
244
|
+
print("File over size!!");
|
|
245
|
+
return;
|
|
246
|
+
# --------------------------------------------------
|
|
247
|
+
with open(Pms_FileName, "rb") as obj_FP:
|
|
248
|
+
obj_FileData = obj_FP.read();
|
|
249
|
+
# --------------------------------------------------
|
|
250
|
+
ms_SQL = f"UPDATE {Pms_TableName} SET {Pms_BlobFieldName}=%s WHERE {Pms_QUERY}";
|
|
251
|
+
Pobj_Query.execute(ms_SQL, (obj_FileData,));
|
|
252
|
+
# --------------------------------------------------
|
|
253
|
+
self.CUobj_Conn.commit();
|
|
254
|
+
|
|
255
|
+
|
|
256
|
+
# --------------------------------------------------------------------------------
|
|
257
|
+
# FUNC: 取得伺服主機系統日期時間
|
|
258
|
+
# PIN :
|
|
259
|
+
# POUT:
|
|
260
|
+
# --------------------------------------------------------------------------------
|
|
261
|
+
def CUF_GetServerDateTime(self, Pms_SEPCHAR_DATE, Pms_SEPCHAR_TIME,
|
|
262
|
+
Pms_SEPERATOR):
|
|
263
|
+
ms_DateTime = "";
|
|
264
|
+
# ------------------------------------------------------------
|
|
265
|
+
ms_FMT_DATE = "%Y" + Pms_SEPCHAR_DATE + "%m" + Pms_SEPCHAR_DATE + "%d";
|
|
266
|
+
ms_FMT_TIME = "%H" + Pms_SEPCHAR_TIME + "%i" + Pms_SEPCHAR_TIME + "%s";
|
|
267
|
+
# ------------------------------------------------------------
|
|
268
|
+
ms_SQL = "SELECT CONCAT(DATE_FORMAT(CURRENT_DATE(), '"+ \
|
|
269
|
+
ms_FMT_DATE + "'), '"+ Pms_SEPERATOR + \
|
|
270
|
+
"',TIME_FORMAT(CURRENT_TIME(), '" + \
|
|
271
|
+
ms_FMT_TIME + "')) AS _DATETIME";
|
|
272
|
+
obj_MyQuery = self.CUF_DB_OpenSQL(self.CUobj_Conn, ms_SQL);
|
|
273
|
+
obj_DataSet = self.CUF_DB_FETCH(obj_MyQuery);
|
|
274
|
+
# ------------------------------------------------------------
|
|
275
|
+
ms_DateTime = obj_DataSet["_DATETIME"];
|
|
276
|
+
# ------------------------------------------------------------
|
|
277
|
+
return(ms_DateTime);
|
|
278
|
+
# --------------------------------------------------------------------------------
|
|
279
|
+
def CUF_GetServerDateTime1(self, PmB_DELIMITER):
|
|
280
|
+
if(PmB_DELIMITER == True):
|
|
281
|
+
ms_RetVal = self.CUF_GetServerDateTime("/", ":", " ");
|
|
282
|
+
else:
|
|
283
|
+
ms_RetVal = self.CUF_GetServerDateTime("", "", "");
|
|
284
|
+
# ------------------------------------------------------------
|
|
285
|
+
return(ms_RetVal);
|
|
286
|
+
# --------------------------------------------------------------------------------
|
|
287
|
+
def CUF_GetServerDateTime2(self):
|
|
288
|
+
return(self.CUF_GetServerDateTime("", "", ""));
|
|
289
|
+
# --------------------------------------------------------------------------------
|
|
290
|
+
def CUF_GetServerDate(self, Pms_DELIMITER):
|
|
291
|
+
ms_DateTime = "";
|
|
292
|
+
# ------------------------------------------------------------
|
|
293
|
+
ms_SQL = "SELECT DATE_FORMAT(CURRENT_DATE(), " \
|
|
294
|
+
"'%Y" + Pms_DELIMITER + "%m" + Pms_DELIMITER + \
|
|
295
|
+
"%d') AS _DATE";
|
|
296
|
+
obj_MyQuery = self.CUF_DB_OpenSQL(self.CUobj_Conn , ms_SQL);
|
|
297
|
+
obj_DataSet = self.CUF_DB_FETCH(obj_MyQuery);
|
|
298
|
+
# ------------------------------------------------------------
|
|
299
|
+
ms_DateTime = obj_DataSet["_DATE"];
|
|
300
|
+
# ------------------------------------------------------------
|
|
301
|
+
return(ms_DateTime);
|
|
302
|
+
# --------------------------------------------------------------------------------
|
|
303
|
+
def CUF_GetServerTime(self, Pms_DELIMITER):
|
|
304
|
+
ms_DateTime = "";
|
|
305
|
+
# ------------------------------------------------------------
|
|
306
|
+
ms_SQL = "SELECT TIME_FORMAT(CURRENT_TIME(), " \
|
|
307
|
+
"'%H" + Pms_DELIMITER + "%i" + Pms_DELIMITER + \
|
|
308
|
+
"%s') AS _TIME";
|
|
309
|
+
obj_MyQuery = self.CUF_DB_OpenSQL(self.CUobj_Conn, ms_SQL);
|
|
310
|
+
obj_DataSet = self.CUF_DB_FETCH(obj_MyQuery);
|
|
311
|
+
# ------------------------------------------------------------
|
|
312
|
+
ms_DateTime = obj_DataSet["_TIME"];
|
|
313
|
+
# ------------------------------------------------------------
|
|
314
|
+
return(ms_DateTime);
|
|
315
|
+
|
|
316
|
+
|
|
317
|
+
# --------------------------------------------------------------------------------
|
|
318
|
+
# FUNC: 日期時間計算 (相加/減 Pmi_TimeSecond)
|
|
319
|
+
# PIN : Pms_DateTime 可配合使用 CUF_GetServerDateTime(...) 取得系統日期時間
|
|
320
|
+
# Pmi_TImeSecond -59 ~ +59 秒
|
|
321
|
+
# POUT:
|
|
322
|
+
# --------------------------------------------------------------------------------
|
|
323
|
+
def CUF_AddTime(self, Pms_DateTime, Pmi_TimeSecond):
|
|
324
|
+
ms_SQL = "SELECT ADDTIME('"+ Pms_DateTime + "', "+\
|
|
325
|
+
str(Pmi_TimeSecond)+ ") AS _TIMESTR ";
|
|
326
|
+
obj_MyQuery = self.CUF_DB_OpenSQL(self.CUobj_Conn, ms_SQL);
|
|
327
|
+
obj_DataSet = self.CUF_DB_FETCH(obj_MyQuery);
|
|
328
|
+
ms_TimeSTR = obj_DataSet["_TIMESTR"];
|
|
329
|
+
# ------------------------------------------------------------
|
|
330
|
+
return(ms_TimeSTR);
|
|
331
|
+
|
|
332
|
+
|
|
333
|
+
# --------------------------------------------------------------------------------
|
|
334
|
+
# FUNC: 將目前時間 加/減 Pmi_TimeSecond 秒
|
|
335
|
+
# PIN :
|
|
336
|
+
# POUT:
|
|
337
|
+
# --------------------------------------------------------------------------------
|
|
338
|
+
def CUF_AddTime_Current(self, Pmi_TimeSecond):
|
|
339
|
+
ms_CurrTime = self.CUF_GetServerDateTime1(True);
|
|
340
|
+
ms_CurrTime = self.CUF_AddTime(ms_CurrTime, Pmi_TimeSecond);
|
|
341
|
+
# ------------------------------------------------------------
|
|
342
|
+
return(ms_CurrTime);
|
|
343
|
+
|
|
344
|
+
|
|
345
|
+
# ---------------------------------------------------------------------------
|
|
346
|
+
# 使用範例
|
|
347
|
+
# ---------------------------------------------------------------------------
|
|
348
|
+
if(__name__ == '__main__'):
|
|
349
|
+
Gobj_mySQLDBCtrl = CLASS_mySQLDBCtrl();
|
|
350
|
+
# ------------------------------------------------------------
|
|
351
|
+
Gobj_Conn = Gobj_mySQLDBCtrl.CUF_OpenConnection(Pms_DB_HostIP= "mis.gotech.biz",
|
|
352
|
+
Pmi_DB_Port = 3300,
|
|
353
|
+
Pms_DB_Name = "gotech_mis",
|
|
354
|
+
Pms_User = "root",
|
|
355
|
+
Pms_Password = "gotechdf8000sys");
|
|
356
|
+
# ------------------------------------------------------------
|
|
357
|
+
# [範例1]
|
|
358
|
+
# ms_SQL = 'SELECT * From tbemployee';
|
|
359
|
+
# obj_Query = Gobj_mySQLDBCtrl.CUF_DB_OpenSQL(Gobj_Conn, ms_SQL);
|
|
360
|
+
# print(Gobj_mySQLDBCtrl.CUF_DB_FETCH(obj_Query)); # NEXT
|
|
361
|
+
# print(Gobj_mySQLDBCtrl.CUF_DB_FETCH(obj_Query)); # NEXT
|
|
362
|
+
# [範例2]
|
|
363
|
+
# ms_SQL = "SELECT * From tbdepartment order by DEPNO";
|
|
364
|
+
# obj_Query = self.CVobj_mySQLDBCtrl.CUF_DB_OpenSQL(self.CVobj_Conn, ms_SQL);
|
|
365
|
+
#
|
|
366
|
+
ms_SQL = """
|
|
367
|
+
SELECT tbdepartment.*, tbemployee.*
|
|
368
|
+
From tbemployee
|
|
369
|
+
INNER JOIN tbdepartment ON (
|
|
370
|
+
tbemployee.ZONE_ID = tbdepartment.ZONE_ID AND
|
|
371
|
+
tbemployee.DEPNO = tbdepartment.DEPNO)
|
|
372
|
+
WHERE EMPID >= 10 AND EMPID <= 30
|
|
373
|
+
ORDER BY EMPID
|
|
374
|
+
""";
|
|
375
|
+
obj_Query = Gobj_mySQLDBCtrl.CUF_DB_OpenSQL(Gobj_Conn, ms_SQL);
|
|
376
|
+
mi_RECCNT = Gobj_mySQLDBCtrl.CUF_DB_RecordCount(obj_Query);
|
|
377
|
+
print("Record count = "+ str(mi_RECCNT));
|
|
378
|
+
|
|
379
|
+
for mi_c in range(1, 10):
|
|
380
|
+
obj_DataSet = Gobj_mySQLDBCtrl.CUF_DB_FETCH(obj_Query);
|
|
381
|
+
print(obj_DataSet["DEPNO"], " ", obj_DataSet["DEPNAME"],
|
|
382
|
+
obj_DataSet["EMPID"], " ", obj_DataSet["EMPNAME"]);
|
|
383
|
+
|
|
384
|
+
|
|
385
|
+
ms_SQL = "SELECT * FROM _def_fileservicemedia_d "\
|
|
386
|
+
" WHERE FolderType=1 AND MEDIAID=1 AND BlockID=1 ";
|
|
387
|
+
obj_Query = Gobj_mySQLDBCtrl.CUF_DB_OpenSQL(Gobj_Conn, ms_SQL);
|
|
388
|
+
Gobj_mySQLDBCtrl.CUF_SetBlobField(obj_Query, "_def_fileservicemedia_d",
|
|
389
|
+
"FolderType=1 AND MEDIAID=1 AND BlockID=1 ",
|
|
390
|
+
"Media_Block",
|
|
391
|
+
"C:\\TEMP\\baselib.zip")
|
|
392
|
+
|
|
393
|
+
|
|
394
|
+
ms_SQL = "SELECT * FROM _def_fileservicemedia_d "\
|
|
395
|
+
" WHERE FolderType=1 AND MEDIAID=1 AND BlockID=1 ";
|
|
396
|
+
obj_Query = Gobj_mySQLDBCtrl.CUF_DB_OpenSQL(Gobj_Conn, ms_SQL);
|
|
397
|
+
Gobj_mySQLDBCtrl.CUF_GetBlobField(obj_Query, "Media_Block", "C:\\temp\\PPPKKK.zip");
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: mySQLDBCtrlAPI
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: mySQLDBCtrlAPI Python package
|
|
5
|
+
Author-email: James Lin <tylin123@ms27.hinet.net>
|
|
6
|
+
Project-URL: Homepage, https://mis.gotech.biz
|
|
7
|
+
Description-Content-Type: text/markdown
|
|
8
|
+
Requires-Dist: pymysql
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
mySQLDBCtrlAPI/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
|
+
mySQLDBCtrlAPI/mySQLDBCtrl.py,sha256=uNFUZIC3rI-vSXLEeqg-KYM6tO-N7_A25Rz00nRewuc,19806
|
|
3
|
+
mysqldbctrlapi-0.1.0.dist-info/METADATA,sha256=eAqVll-V-YM50Azl1fgXwjtMe-MtxMXQt-W9HPy5C80,264
|
|
4
|
+
mysqldbctrlapi-0.1.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
5
|
+
mysqldbctrlapi-0.1.0.dist-info/top_level.txt,sha256=onworg8ic7UQRjmAT-NpGAJFJb4X9hU1rOlYUCD_gng,15
|
|
6
|
+
mysqldbctrlapi-0.1.0.dist-info/RECORD,,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
mySQLDBCtrlAPI
|