明凯博客

关注网站技术,一个特立独行的程序员

【python案例】将生成的优惠券放入到mysql中

上一篇文章中,我们将生成的优惠券txt中,现在我们想保存到mysql中。

【python案例】批量生成可逆转的优惠券

以前我们写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))将值保存到数据库。

我们看看数据库中插入的值。

5

, , , ,

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注