【python案例】将生成的优惠券放入到mysql中
上一篇文章中,我们将生成的优惠券txt中,现在我们想保存到mysql中。
以前我们写mysql直接用的是MySQLdb方法,这次我们来尝试用用orm方法。
这里我们选用了sqlalchemy,因为比较熟悉lavarel,sqlalchemy和Eloquent还是比较相似的,容易上手。
#!/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中
Thanks for sharing. I read many of your blog posts, cool, your blog is very good.
这个有用吗?
有用啊,只是个思路而已。