MCPcopy
hub / github.com/skywind3000/ECDICT / DictMySQL

Class DictMySQL

stardict.py:331–636  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

329# DictMysql
330#----------------------------------------------------------------------
331class DictMySQL (object):
332
333 def __init__ (self, desc, init = False, timeout = 10, verbose = False):
334 self.__argv = {}
335 self.__uri = {}
336 if isinstance(desc, dict):
337 argv = desc
338 else:
339 argv = self.__url_parse(desc)
340 for k, v in argv.items():
341 self.__argv[k] = v
342 if k not in ('engine', 'init', 'db', 'verbose'):
343 self.__uri[k] = v
344 self.__uri['connect_timeout'] = timeout
345 self.__conn = None
346 self.__verbose = verbose
347 self.__init = init
348 if 'db' not in argv:
349 raise KeyError('not find db name')
350 self.__open()
351
352 def __open (self):
353 mysql_startup()
354 if MySQLdb is None:
355 raise ImportError('No module named MySQLdb')
356 fields = [ 'id', 'word', 'sw', 'phonetic', 'definition',
357 'translation', 'pos', 'collins', 'oxford', 'tag', 'bnc', 'frq',
358 'exchange', 'detail', 'audio' ]
359 self.__fields = tuple([(fields[i], i) for i in range(len(fields))])
360 self.__names = { }
361 for k, v in self.__fields:
362 self.__names[k] = v
363 self.__enable = self.__fields[3:]
364 self.__db = self.__argv.get('db', 'stardict')
365 if not self.__init:
366 uri = {}
367 for k, v in self.__uri.items():
368 uri[k] = v
369 uri['db'] = self.__db
370 self.__conn = MySQLdb.connect(**uri)
371 else:
372 self.__conn = MySQLdb.connect(**self.__uri)
373 return self.init()
374 return True
375
376 # 输出日志
377 def out (self, text):
378 if self.__verbose:
379 print(text)
380 return True
381
382 # 初始化数据库与表格
383 def init (self):
384 database = self.__argv.get('db', 'stardict')
385 self.out('create database: %s'%database)
386 self.__conn.query("SET sql_notes = 0;")
387 self.__conn.query('CREATE DATABASE IF NOT EXISTS %s;'%database)
388 self.__conn.query('USE %s;'%database)

Callers 2

open_dictFunction · 0.85
test2Function · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected