1. 程式人生 > 實用技巧 >AtCoder Contest 188題解 (已補完)

AtCoder Contest 188題解 (已補完)

需求:

1.需要往資料庫插入批量資料,且資料需要隨機,帶有日期格式的資料。

2.檢視目的接收表,存在唯一key,欄位2是日期格式。其他資料可以一樣。

 

首先需要寫一個連結資料庫的函式:import MySQLdb



class MySql():
def __init__(self, db):
self.mysql = MySQLdb.Connect(
host="10.100.111.111",
port=33066,
user="mysql",
passwd="123456",
db=db,
charset="utf8")
self.cursor = self.mysql.cursor()

def quary(self, sql):
"""
查詢
:param sql:
:return:
"""
self.cursor.execute(sql)
result = self.cursor.fetchall()
return result

def update(self, sql):
"""
修改
:param sql:
:return:
"""
self.cursor.execute(sql)
self.mysql.commit()

def delete(self, sql):
"""
刪除
:param sql:
:return:
"""

self.cursor.execute(sql)
self.mysql.commit()

def insert(self, sql):
"""
插入
:param sql:
:return:
"""
self.cursor.execute(sql)
self.mysql.commit()
return "success"

def close(self):
self.mysql.close()



然後利用python迴圈寫一個日期格式轉化的函式:

class DateEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, datetime):
return obj.strftime("%Y-%m-%d %H:%M:%S")
else:
return json.JSONEncoder.default(self, obj)

def test1(self):
"""
id為唯一key,不能相同,需要查詢到count總數得到id 時間是當前時間+1天生成sql語句

"""

ids = 174

cur_date = time.strftime("%Y-%m-%d")
start_time = datetime.strptime(cur_date, "%Y-%m-%d")

for i in range(50):
ids = ids + 1
dt = start_time + timedelta(days=i)
to_date = json.dumps(dt, cls=DateEncoder) # 將datetime格式轉化為json格式
to_date = to_date[1:11] # 取string中的年月日
value = (
ids, to_date, '0104', '10', '1609725600', 64, '產品測試', 1100018191, 'mytest',
'5ff674f5e4b0fd510e457fd2', '1.7號啊',
0, '01', '06', '01', '0', '選單2', '908E14881C52DF30A50C93491AE2BA8C', '1', '123', 10001, 9999, 912)
sql = """INSERT INTO ads_marketing_report.test_table(id, dt, fdate, ftime, servertime, agency_id, agency_name, owner_id, owner_name, service_id, service_name, service_platform, sbiztype, tritype, menulev, menuseq, btnele, btnlinkmd, functype, smssource, expose_nums, expose_uv, click_nums)
VALUES""" + str(value).decode('string_escape')
mysql.insert(sql=sql)







插入多少條 迴圈多少次就行,或者研究下儲存過程插入也行的