在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数据库中相关推荐

  1. python小程序源代码-整理了适合新手的20个Python练手小程序

    100个Python练手小程序,学习python的很好的资料,覆盖了python中的每一部分,可以边学习边练习,更容易掌握python. 本文附带基础视频教程:私信回复[基础]就可以获取的 [程序1] ...

  2. python小程序-【Python精华】100个Python练手小程序

    100个Python练手小程序,学习python的很好的资料,覆盖了python中的每一部分,可以边学习边练习,更容易掌握python. [程序1] 题目:有1.2.3.4个数字,能组成多少个互不相同 ...

  3. python小程序-整理了适合新手的20个Python练手小程序

    即刻关注公众号,发现世界的美好 100个Python练手小程序,学习python的很好的资料,覆盖了python中的每一部分,可以边学习边练习,更容易掌握python. [程序1] 题目:有1.2.3 ...

  4. python编程100个小程序-【Python精华】100个Python练手小程序

    100个Python练手小程序,学习python的很好的资料,覆盖了python中的每一部分,可以边学习边练习,更容易掌握python. [程序1] 题目:有1.2.3.4个数字,能组成多少个互不相同 ...

  5. python编程100个小程序-整理了适合新手的20个Python练手小程序

    即刻关注公众号,发现世界的美好 100个Python练手小程序,学习python的很好的资料,覆盖了python中的每一部分,可以边学习边练习,更容易掌握python. [程序1] 题目:有1.2.3 ...

  6. python练手经典100例-【Python精华】100个Python练手小程序

    100个Python练手小程序,学习python的很好的资料,覆盖了python中的每一部分,可以边学习边练习,更容易掌握python. [程序1] 题目:有1.2.3.4个数字,能组成多少个互不相同 ...

  7. python练手小程序—调整图片分辨率(大小)

    在GitHub上发现一些很有意思的项目,由于本人作为Python的初学者,编程代码能力相对薄弱,为了加强Python的学习,特此利用前辈们的学习知识成果,自己去亲自实现. 一周没有更新了,主要还是自己 ...

  8. Python练手小程序—统计英文文件中单词出现的的个数

    在GitHub上发现一些很有意思的项目,由于本人作为Python的初学者,编程代码能力相对薄弱,为了加强Python的学习,特此利用前辈们的学习知识成果,自己去亲自实现. 一周没有更新了,主要还是自己 ...

  9. 【Python精华】100个Python练手小程序(Python3 已亲测)

    100个Python练手小程序,学习python的很好的资料,覆盖了python中的每一部分,可以边学习边练习,更容易掌握python. [程序1]  题目:有1.2.3.4个数字,能组成多少个互不相 ...

  10. 计算机毕业设计Java学习自律养成小程序后台(源码+系统+mysql数据库+lw文档)

    计算机毕业设计Java学习自律养成小程序后台(源码+系统+mysql数据库+lw文档) 计算机毕业设计Java学习自律养成小程序后台(源码+系统+mysql数据库+lw文档) 本源码技术栈: 项目架构 ...

最新文章

  1. Vs定义超大数组时,stack OverFlow的解决方法
  2. 2015年第六届蓝桥杯 - 省赛 - C/C++大学A组 - I. 垒骰子
  3. 虚拟机中PXE-MOF:Exiting intel PXE ROM.Operating system not found解决方法
  4. JavaScript项目中锁定npm依赖包版本
  5. 用户如何设置浏览器主页的历史记录和管理加载项
  6. mysql 5.7 安装tokudb_安装Percona-Server-5.7.18+tokudb
  7. 《博德之门3》的许多设计,还不如上世纪的前作
  8. 移动APP开发的三种常见模式
  9. php 姓氏表,php 根据姓氏笔画排序怎么做
  10. GLTF格式学习:glTF介绍( 基于WebGL
  11. 4K秒开,稀缺宝藏影视APP!
  12. 关于锐捷认证与傻瓜路由器
  13. 体验Vue3.0, 仿一个网易云音乐客户端
  14. 「自然语言处理(NLP)」入门系列(一)初识NLP
  15. C语言魔塔视频百度云,原创 C语言版魔塔
  16. 微信小程序之实现常用日期格式-日历格式(二)
  17. Charles抓包Android app
  18. “九章”量子计算机这么牛,到底有什么用?
  19. 填坑之路!云服务器xshell可以连接,xftp无法连接或ssh能够登录,sftp登不上去
  20. int在matlab中的作用,int函数表达的是什么意思

热门文章

  1. 散列表(中):如何打造一个工业级水平的散列表?
  2. 11开根号不用计算机,数学开根号有什么方法?不用计算器
  3. 八仙过海,四种同步(Java中的四种同步类)
  4. 文件夹批量重命名编号的快速方法
  5. Go channel详解
  6. [家里蹲大学数学杂志]第033期稳态可压Navier-Stokes方程弱解的存在性
  7. 【圣诞节给爱的人打印一颗圣诞树吧】超详细代码实现——圣诞树打印
  8. 前端项目搭建基本流程
  9. java图片缩小算法_图片缩小尺寸算法
  10. windows下cmd 查找/关闭端口