Python练手小程序—生成优惠券码写入mysql数据库中
在GitHub上发现一些很有意思的项目,由于本人作为Python的初学者,编程代码能力相对薄弱,为了加强Python的学习,特此利用前辈们的学习知识成果,自己去亲自实现。
一周没有更新了,主要还是自己太懒,三分热度,我想如果我继续这样下去,做什么事都做不好,以此为戒,坚持一个月内练习完这些知识点!
来源:GitHub
Python练手小程序项目地址:https://github.com/Show-Me-the-Code/python
写作日期:2019.12.04
今天练习第0002题,题目如下:
首先,看到这道题,主要目的是如何把数据通过Python写入MySQL数据库,那么,我们必须按照MySQL数据库。
mac下MySQL的安装步骤:
# 如果mac没有安装homebrew,那么先安装homebrew,因为我是通过brew命令安装MySQL的。
# homebrew官网:https://caskroom.github.io/,复制页面命令粘贴终端,点击enter键安装即可。
$/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
# 我安装的mysql==5.7版本,安装MySQL建议大家可以看网上的教程,可能系统或环境不一样,就会出错。我安装相对比较顺利
$brew install mysql@5.7
# 配置系统环境变量,先找到mysql@5.7文件夹下的bin目录,每个人电脑路径可能不一样,下面是我的mysql@5.7文件夹下bin文件夹的绝对路径,执行下面操作
$echo 'export PATH="/usr/local/opt/mysql@5.7/bin:$PATH"' >> ~/.bash_profile
# 启动mysql
$mysql.server start
# 运行命令检查是否安装成功
$mysql -uroot
# 如果想设置密码
$mysqladmin -u root password '****'
OK,这样就搞定了mysql的安装,
用到两个库:sqlalchemy和pymysql,其中sqlalchemy依赖于pymysql,所以两个都要安装。
$pip install pymysql
$pip install sqlalchemy
下面简单介绍sqlalchemy:
ORM 全称 Object Relational Mapping, 翻译过来叫对象关系映射。简单的说,ORM 将数据库中的表与面向对象语言中的类建立了一种对应关系。这样,我们要操作数据库,数据库中的表或者表中的一条记录就可以直接通过操作类或者类实例来完成。而SQLAlchemy 是Python 社区最知名的 ORM 工具之一,为高效和高性能的数据库访问设计,实现了完整的企业级持久模型。
参考教程:
1、https://www.liaoxuefeng.com/wiki/897692888725344/95508146009104
2、https://www.jianshu.com/p/637ede0939d1
好吧,弄了这么多,终于开始写这个小项目了,其实就是利用sqlalchemy和pymysql,把每个产生的激活码写到mysql数据库中,具体如下:
- 先在mysql中建立相关表名
$mysql -u root -p
# 输入密码,进入mysql客户端,执行以下命令
mysql>create database coupon;
mysql>use coupon;
mysql>CREATE TABLE coupon_table(
id varchar(200) PRIMARY KEY,
deadline datetime,
userID varchar(200),
code varchar(200)
);
- Python连接mysql
import base64
import re
import datetime
from sqlalchemy import Column, String, DATE, create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base# 创建对象的基类
Base = declarative_base()# 连接数据库的基本信息
database_info = {'user': 'root', # 用户名'passwd': 'root', # 密码'ip': '127.0.0.1', # ip地址'port': '3306', # 端口'database': 'coupon' # 数据库名
}class Coupon(Base):"""创建一个Coupon类,与mysql数据库名coupon下的表名coupon_table进行关联以下创建了4个基本字段,类中的每一个 Column 代表数据库中的一列,并定义了数据类型"""# 数据库coupon下的表名coupon_table__tablename__ = 'coupon_table'# 表结构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_map(DB_info)# 初始化数据库连接,连接的信息格式:'数据库类型+数据库驱动名称://用户名:口令@机器地址:端口号/数据库名'engine = create_engine(connect_str)# 创建DBSession类型,在此基础之上我们就能进行增删改查的操作DBSession = sessionmaker(bind=engine)# 创建Session对象session = DBSession()return sessiondef upload_to_database():"""将数据写入数据表"""session = make_connect(database_info)with open('coupon.txt', 'r') as file:for line in file.readlines():# bytes类型转str类型:id:1000/goods:500line = str(parse_coupon(line), encoding="utf8")# 其他后面的数值作为id值user_id, good_id = re.findall(r'id:(.*)/.*:(.*)', line)[0]# 将Coupon实例添加到sessionsession.add(Coupon(id=user_id, deadline=datetime.date.today(), userID=user_id, code=line))# 提交session.commit()# 关闭sessionsession.close()def parse_coupon(c_code):"""解析优惠券,不过返回bytes类型,如:b'id:1000/goods:500'"""return base64.urlsafe_b64decode(c_code.encode('utf-8'))if __name__ == '__main__':upload_to_database()
查询结果如下:
Python练手小程序—生成优惠券码写入mysql数据库中相关推荐
- python小程序源代码-整理了适合新手的20个Python练手小程序
100个Python练手小程序,学习python的很好的资料,覆盖了python中的每一部分,可以边学习边练习,更容易掌握python. 本文附带基础视频教程:私信回复[基础]就可以获取的 [程序1] ...
- python小程序-【Python精华】100个Python练手小程序
100个Python练手小程序,学习python的很好的资料,覆盖了python中的每一部分,可以边学习边练习,更容易掌握python. [程序1] 题目:有1.2.3.4个数字,能组成多少个互不相同 ...
- python小程序-整理了适合新手的20个Python练手小程序
即刻关注公众号,发现世界的美好 100个Python练手小程序,学习python的很好的资料,覆盖了python中的每一部分,可以边学习边练习,更容易掌握python. [程序1] 题目:有1.2.3 ...
- python编程100个小程序-【Python精华】100个Python练手小程序
100个Python练手小程序,学习python的很好的资料,覆盖了python中的每一部分,可以边学习边练习,更容易掌握python. [程序1] 题目:有1.2.3.4个数字,能组成多少个互不相同 ...
- python编程100个小程序-整理了适合新手的20个Python练手小程序
即刻关注公众号,发现世界的美好 100个Python练手小程序,学习python的很好的资料,覆盖了python中的每一部分,可以边学习边练习,更容易掌握python. [程序1] 题目:有1.2.3 ...
- python练手经典100例-【Python精华】100个Python练手小程序
100个Python练手小程序,学习python的很好的资料,覆盖了python中的每一部分,可以边学习边练习,更容易掌握python. [程序1] 题目:有1.2.3.4个数字,能组成多少个互不相同 ...
- python练手小程序—调整图片分辨率(大小)
在GitHub上发现一些很有意思的项目,由于本人作为Python的初学者,编程代码能力相对薄弱,为了加强Python的学习,特此利用前辈们的学习知识成果,自己去亲自实现. 一周没有更新了,主要还是自己 ...
- Python练手小程序—统计英文文件中单词出现的的个数
在GitHub上发现一些很有意思的项目,由于本人作为Python的初学者,编程代码能力相对薄弱,为了加强Python的学习,特此利用前辈们的学习知识成果,自己去亲自实现. 一周没有更新了,主要还是自己 ...
- 【Python精华】100个Python练手小程序(Python3 已亲测)
100个Python练手小程序,学习python的很好的资料,覆盖了python中的每一部分,可以边学习边练习,更容易掌握python. [程序1] 题目:有1.2.3.4个数字,能组成多少个互不相 ...
- 计算机毕业设计Java学习自律养成小程序后台(源码+系统+mysql数据库+lw文档)
计算机毕业设计Java学习自律养成小程序后台(源码+系统+mysql数据库+lw文档) 计算机毕业设计Java学习自律养成小程序后台(源码+系统+mysql数据库+lw文档) 本源码技术栈: 项目架构 ...
最新文章
- Vs定义超大数组时,stack OverFlow的解决方法
- 2015年第六届蓝桥杯 - 省赛 - C/C++大学A组 - I. 垒骰子
- 虚拟机中PXE-MOF:Exiting intel PXE ROM.Operating system not found解决方法
- JavaScript项目中锁定npm依赖包版本
- 用户如何设置浏览器主页的历史记录和管理加载项
- mysql 5.7 安装tokudb_安装Percona-Server-5.7.18+tokudb
- 《博德之门3》的许多设计,还不如上世纪的前作
- 移动APP开发的三种常见模式
- php 姓氏表,php 根据姓氏笔画排序怎么做
- GLTF格式学习:glTF介绍( 基于WebGL
- 4K秒开,稀缺宝藏影视APP!
- 关于锐捷认证与傻瓜路由器
- 体验Vue3.0, 仿一个网易云音乐客户端
- 「自然语言处理(NLP)」入门系列(一)初识NLP
- C语言魔塔视频百度云,原创 C语言版魔塔
- 微信小程序之实现常用日期格式-日历格式(二)
- Charles抓包Android app
- “九章”量子计算机这么牛,到底有什么用?
- 填坑之路!云服务器xshell可以连接,xftp无法连接或ssh能够登录,sftp登不上去
- int在matlab中的作用,int函数表达的是什么意思