sql嵌入python的好处_python:pymsql插入优化

摘要

刚接触scrapy时候,需要把item经过pipelines处理后插入到mysql,写插入语句教程是将item数据一个个枚举出来,在字段特别多的时候还是蛮麻烦的,而且可扩展性比较差,其实只要稍作封装就能很好的解决这种尴尬

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()

日期格式化

由于对日期函数不是很熟悉,插入日期格式不对导致插入失败,后来查了下相关文档,清楚了很多

1、由日期格式转化为字符串格式的函数为: datetime.datetime.strftime()

2、由字符串格式转化为日期格式的函数为: datetime.datetime.strptime()

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: 时区名称(如果是本地时间,返回空字符串)

# %%: %% => %

引用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值