【python案例】将生成的优惠券放入到mysql中
上一篇文章中,我们将生成的优惠券txt中,现在我们想保存到mysql中。
以前我们写mysql直接用的是MySQLdb方法,这次我们来尝试用用orm方法。
这里我们选用了sqlalchemy,因为比较熟悉lavarel,sqlalchemy和Eloquent还是比较相似的,容易上手。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | #!/usr/bin/python # -*- coding: utf-8 -*- import base64 import re from sqlalchemy import Column, String, DATE, create_engine from sqlalchemy.orm import sessionmaker from sqlalchemy.ext.declarative import declarative_base import sys # 初始化编码 reload(sys) sys.setdefaultencoding('utf-8') # 创建对象的基类 Base = declarative_base() # 初始化数据库连接参数 database_info = { 'user': 'root', 'passwd': '', 'ip': 'localhost', 'port': '3306', 'database': 'spider' } # 定义Coupon对象 class Coupon(Base): # 表的名字 __tablename__ = 'coupon' # 表的结构 id = Column(String(200), primary_key=True) deadline = Column(DATE) userID = Column(String(200)) code = Column(String(200)) def make_connect(DB_info): # 初始化数据库连接 connect_str = 'mysql+pymysql://{user}:{passwd}@{ip}:{port}/{database}'.format(**DB_info) engine = create_engine(connect_str) # 创建DBSession类型: DBSession = sessionmaker(engine) #创建Session session = DBSession() return session #解析优惠码 def parse_coupon(c_code): return base64.urlsafe_b64decode(c_code.encode('utf-8')) def upload_to_database(): #连接数据库 session = make_connect(database_info) #打开上一个文件生成优惠码文件 with open('../coupon/coupon.txt', 'r') as file: for line in file.readlines(): c_id = re.findall(r'.*,.*:(.*)', str(parse_coupon(line))) session.add(Coupon(id=c_id.pop(), code=line)) session.commit() session.close() if __name__ == '__main__': upload_to_database() |
这里我们用parse_coupon解析了优惠券,然后用 c_id = re.findall(r’.*,.*:(.*)’, str(parse_coupon(line)))获取了id的值
最后用session.add(Coupon(id=c_id.pop(), code=line))将值保存到数据库。
我们看看数据库中插入的值。
【python案例】批量生成可逆转的优惠券 【python案例】将生成的优惠券放入到redis中
这个有用吗?
有用啊,只是个思路而已。