python:pymsql插入優化

摘要

剛接觸scrapy時候,須要把item通過pipelines處理後插入到mysql,寫插入語句教程是將item數據一個個枚舉出來,在字段特別多的時候仍是蠻麻煩的,並且可擴展性比較差,其實只要稍做封裝就能很好的解決這種尷尬python

import pymysql
from datetime import datetime


class MyPyMysql(object):
    def __init__(self, user, passwd, db, host='localhost', port=3306, use_unicode=True):
        self.host = host
        self.port = port
        self.user = user
        self.passwd = passwd
        self.db = db
        self.connect = pymysql.connect(host=self.host, port=self.port, db=self.db, user=self.user, passwd=self.passwd,
                                       use_unicode=True)
        self.cursor = self.connect.cursor()
    
    def insert(self, table_name, kwargs):
        sql = 'insert into {} ({}) VALUES  {};'.format(table_name, ','.join(list(kwargs.keys())),
                                                       tuple(kwargs.values()))
        self.query(sql)
        '''
        success excute insert into student (id,name,age,birthData) VALUES  (12, 'dalex', 20, '2018-03-15 14:32:35.271451');
        success excute insert into student (id,name,age,birthData) VALUES  (23, 'balex', 20, '2018-03-15 14:32:35.271451');
        '''
        print('success excute {}'.format(sql))
    
    def query(self, sql):
        self.cursor.execute(sql)
        self.connect.commit()
    
    def close(self):
        self.cursor.close()
        self.connect.close()


if __name__ == "__main__":
    me = MyPyMysql('root', 'root', 'blog')
    birthData = str(datetime.now())
    me.insert('student', {'id': 12, 'name': 'dalex', 'age': 20, 'birthData': birthData})
    me.insert('student', {'id': 23, 'name': 'balex', 'age': 20, 'birthData': birthData})
    me.close()
日期格式化

因爲對日期函數不是很熟悉,插入日期格式不對致使插入失敗,後來查了下相關文檔,清楚了不少mysql

一、由日期格式轉化爲字符串格式的函數爲: datetime.datetime.strftime()
二、由字符串格式轉化爲日期格式的函數爲: datetime.datetime.strptime()git

from datetime import datetime
    print(datetime.now().strftime('%Y-%m-%d'))
    print(datetime.strptime('2018-03-15 15:32:24', '%Y-%m-%d %H:%M:%S'))
    '''
    輸出結果爲:
    2018-03-15
    2018-03-15 15:32:24
    '''
    #格式化時間相操做
    # %a 星期的簡寫。如 星期三爲Web  
    # %A 星期的全寫。如 星期三爲Wednesday  
    # %b 月份的簡寫。如4月份爲Apr  
    # %B月份的全寫。如4月份爲April   
    # %c:  日期時間的字符串表示。(如: 04/07/10 10:43:39)  
    # %d:  日在這個月中的天數(是這個月的第幾天)  
    # %f:  微秒(範圍[0,999999])  
    # %H:  小時(24小時制,[0, 23])  
    # %I:  小時(12小時制,[0, 11])  
    # %j:  日在年中的天數 [001,366](是當年的第幾天)  
    # %m:  月份([01,12])  
    # %M:  分鐘([00,59])  
    # %p:  AM或者PM  
    # %S:  秒(範圍爲[00,61],爲何不是[00, 59],參考python手冊~_~)  
    # %U:  周在當年的週數當年的第幾周),星期天做爲周的第一天  
    # %w:  今天在這周的天數,範圍爲[0, 6],6表示星期天  
    # %W:  周在當年的週數(是當年的第幾周),星期一做爲周的第一天  
    # %x:  日期字符串(如:04/07/10)  
    # %X:  時間字符串(如:10:43:39)  
    # %y:  2個數字表示的年份  
    # %Y:  4個數字表示的年份  
    # %z:  與utc時間的間隔 (若是是本地時間,返回空字符串)  
    # %Z:  時區名稱(若是是本地時間,返回空字符串)  
    # %%:  %% => %
引用

1,python中datetime模塊中strftime/strptime函數
2,pymsql github 源碼github

相關文章
相關標籤/搜索