python 任意字典生成sql: insert。
tb = 'student' dt = {'name': 'ArYe', 'age': 15, 'height': None} ls = [(k, v) for k, v in dt.items() if v is not None] sentence = 'INSERT %s (' % tb + ','.join([i[0] for i in ls]) +\ ') VALUES (' + ','.join(repr(i[1]) for i in ls) + ');' print(sentence)
python 任意字典生成sql : update。
table_name = 'student' d = {'name': 'ArYe', 'age': 15} # 更新的字段及对应值 t = ('id', 307) # 更新所需条件 # 自动构造update语句 sentence = 'UPDATE %s SET ' % table_name + ','.join(['%s=%r' % (k, d[k]) for k in d]) + ' WHERE %s=%r;' % (t[0], t[1]) # 打印 print(sentence)
组合类。
import pymysql class Mysql: def __init__(self, db_name, tb_name): self.db = pymysql.connect('localhost', 'root', 'yellow', charset='utf8', db=db_name) self.cursor = self.db.cursor() self.tb = tb_name def __del__(self): self.cursor.close() self.db.close() def insert(self, dt): ls = [(k, dt[k]) for k in dt if dt[k] is not None] sql = 'insert %s (' % self.tb + ','.join(i[0] for i in ls) +\ ') values (' + ','.join('%r' % i[1] for i in ls) + ');' self.cursor.execute(sql) self.db.commit() def commit(self, sql): try: self.cursor.execute(sql) self.db.commit() except Exception as error: print('\033[031m', error, '\033[0m', sep='') def update(self, dt_update, dt_condition, table): sql = 'UPDATE %s SET ' % table + ','.join('%s=%r' % (k, dt_update[k]) for k in dt_update)\ + ' WHERE ' + ' AND '.join('%s=%r' % (k, dt_condition[k]) for k in dt_condition) + ';' self.commit(sql)