博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
show-me-the-code: MySQL、Redis
阅读量:6638 次
发布时间:2019-06-25

本文共 3692 字,大约阅读时间需要 12 分钟。

hot3.png

第 0002 题:将 0001 题生成的 200 个激活码(或者优惠券)保存到 MySQL 关系型数据库中。

第 0003 题:将 0001 题生成的 200 个激活码(或者优惠券)保存到 Redis 非关系型数据库中。

 

import

    在 coding 的过程中,经常需要复用之前的代码,通过继承类的方法固然是好的,但是 OO 思想不是很强力,就需要调用之前的函数了;

    解释了这么多,还是功力尚浅、、、那么怎么调用之前编写过的函数呢?

    假设需要在 A.py 中调用 B.py 文件内的 C(x, y) 函数:

  • 假设在同一路径下:
# -*- coding: utf-8 -*-import BB.C(x, y)# 2 wayfrom B import CC(x, y)
  • 假设在不同目录下:
# -*- coding: utf-8 -*-import sys# 假设 B.py 在 /home/python 下sys.path.append('/home/python')import BB.C(x, y)# 2 wayimport impB = imp.load_source('B', '/home/python/B.py')improt BB.C(x, y)

 

mysqlclient

    This is a fork of MySQLdb1

    This project adds Python 3 support and bug fixes. I hope this fork is merged back to MySQLdb1 like distribute was merged back to setuptools.

    官方的一段解释已经说的很清楚了,由于 MySQLdb 未能完全支持 Python 3(python 2.7~3.3),所以有识之士就从其中 fork 出来一个版本,针对 Python3 进行了支持,就是 mysqlclient:

Install

# Prerequisites# You may need to install the Python and MySQL development headers and libraries like so:sudo apt-get install python-dev libmysqlclient-dev # Debian / Ubuntusudo yum install python-devel mysql-devel # Red Hat / CentOS# On Windows, there are binary wheel you can install without MySQLConnector/C or MSVC.# Note on Python 3 : if you are using python3 then you need to install python3-dev using the following command :sudo apt-get install python3-dev # debian / Ubuntusudo yum install python3-devel # Red Hat / CentOSbrew install mysql-connector-c # macOS (Homebrew)# Install from PyPIpip install mysqlclient# NOTE: Wheels for Windows may be not released with source package. You should pin version in your requirements.txt to avoid trying to install newest source package.

    一开始使用 pip3 安装 mysqlclient 时,由于系统没有安装 python3-dev,导致在安装时报错,官方对其进行了说明:

Note on Python 3 : if you are using python3 then you need to install python3-dev using the following command :    见上

简单使用

# -*- coding: utf-8 -*-# 由于是 fork 的 MySQLdb,所以还是 import MySQLdbimprot MySQLdb# 创建一个 Mysql 连接对象db = MySQLdb.connect(passwd="moonpie", db="thangs")# 执行一个查询,首先需要一个游标,然后你可以执行查询c = db.cursor()max_pirce = 5c.execute("""SELECT spam, eggs, sausage FROM breakfast WHERE price < %s""", (max_price, ))# 或者可以执行一个 INSERT 语句c.execute("""INSERT INTO fast VALUES (%s)""", (max_price, ))# 获取结果print(c.fetchone())# commit SQL 语句db.commit()# 关闭游标,断开连接c.close()db.close()

表中自增主键归零

    在使用过程中,由于清理了一些垃圾数据,导致了自增主键不连续,需要使主键归零有两种方法:

  • 暴力方法:truncate table
  • 暴力的 truncate table 当然不是很优雅的

    dbcc checkident(table_name, reseed, new_reseed_value) 当前值设置为 new_reseed_value,如果自创建表后没有将行插入该表,则在执行 DBCC CHECKIDENT 后插入第一行将使用 new_reseed_value 的值小于标识列中的最大值,以后引用该表时将产生 2627 号错误信息,这个方法不会清空已有数据,操作比较灵活,不仅可以将自增值归零,也适用于删除大量连续行后,重新设置自增值并插入新的数据;或从新的值开始,当然不能和已有的冲突。

 

Pool

    数据库连接池:

数据库连接池(Connection pooling)是程序启动时建立足够的数据库连接,并将这些连接组成一个连接池,由程序动态地对池中的连接进行申请,使用,释放。

个人理解:创建数据库连接是一个很耗时的操作,也容易对数据库造成安全隐患。所以,在程序初始化的时候,集中创建多个数据库连接,并把他们集中管理,供程序使用,可以保证较快的数据库读写速度,还更加安全可靠。

    看起来是很酷的一个方案,但是引用 Stack Overflow 上的一句话(谷歌翻译 0-0)

    I'd say don't bother with the connection pooling. They're often a source of trouble and with MySQL they're not going to bring you the performance advantage you're hoping for. This road may be a lot of effort to follow--politically--because there's so much best practices hand waving and textbook verbiage in this space about the advantages of connection pooling.

    我会说不要打扰连接池。 他们往往是一个麻烦的来源,而且MySQL也不会为您带来希望的性能优势。 这条道路在政治上可能要付出很大的努力 - 因为在这个空间里有很多最好的做法,在这个空间里挥手和教科书,就是连接池的优点。

 

redis-py

安装

$ pip3 install redis

简单使用

# -*- coding: utf-8 -*-import redis# 连接 redis 得到一个 redis 连接对象r = redis.StrictRedis(host='localhost', port=6379, password='mypasswd', db=0)# 插入一条记录r.set('foo', 'bar')# 插入一条列表记录r.lpush('code': list)# 指定 key 获取 valueprint(r.get('foo')

    相对而言,redis 用到的还是简单一些,有待补充。

 

习题代码上传至 github

 

 

 

 

转载于:https://my.oschina.net/u/2470065/blog/866472

你可能感兴趣的文章
Python之List
查看>>
[ICECTF 2016] [CRYPTO 140 – SAND CASTLE] WRITE UP
查看>>
常见CSS属性
查看>>
9、软件配置工程师指南 - 软件项目角色指南系列文章
查看>>
gluster 配额管理
查看>>
ambari2.0.0升级到2.4.1
查看>>
JS---浏览器检测
查看>>
android之recyclerview的基本使用
查看>>
前端面试
查看>>
javaSE------不定项的运用...
查看>>
shell提取数字
查看>>
微信公众号二次开发之消息回复
查看>>
Hp服务器 raid 磁盘故障数据库数据恢复解决方案
查看>>
yum安装ansible
查看>>
网络服务器预防dos攻击的层次
查看>>
项目实施补充
查看>>
CentOS6.2下64位squid 透明代理配置过程
查看>>
在workstation 11.0上安装Cisco ACS5.6
查看>>
linux中修改ssh端口和禁止root远程登陆设置
查看>>
更改Linux系统root密码
查看>>