python仙修之 入门之后不放弃?

不以学习为目的的学习,那是耍流氓~所以流氓都成了有钱人。。。。。。

额,不贫了。从某天开始,次博客只谈学习和感情,不谈工作,不扯没用的~

今天整个啥呢?容我思量思量~嗯,昨天不整了数据库吗,那就从这里开始吧,来粘贴个小代码,小爽一下子~

“”“数据库の基本操作”“”

from pymysql import *
from hashlib import *
from pymongo import *
from redis import *

def register():
"""注册"""
try:
# 1. 获取连接对象
conn = mysql_conn()
# 2. 数据库操作对象
cur = conn.cursor()
# 3. 编写sql
select_params = [uname]
select_sql = ‘select upwd from momo_users where uname = %s‘
# 4.执行sql
cur.execute(select_sql, select_params)
res = cur.fetchone()
print(res)

if res is not None:
print(‘用户名已经被注册,注册失败‘)
return

# 注册用户 用户一定不存在 插入数据
insert_params = [uname, sha_pwd]
insert_sql = ‘insert into momo_users (uname,upwd) values (%s,%s)‘
count = cur.execute(insert_sql, insert_params)
if count == 0:
print(‘注册失败‘)
else:
print(‘注册成功‘, uname)
# 5. 如果是数据更新操作需要commit
conn.commit()
# 6.关闭cursor对象和连接对象
cur.close()
conn.close()
except Exception as e:
print(e)

def mysql_login():
"""登陆"""
try:
# 1. 获取连接对象
conn = mysql_conn()
# 2. 数据库操作对象
cur = conn.cursor()
# 3. 编写sql
select_params = [uname]
select_sql = ‘select upwd from momo_users where uname = %s‘
# 4.执行sql
cur.execute(select_sql, select_params)
res = cur.fetchone()
if res is None:
# 根据用户名没有获取到相关信息,此时用户名错误
print(‘用户名错误,登录失败‘)
cur.close()
conn.close()
return
# 获取密码信息 判断密码是否相等
print(res)
m_pwd = res[0]
if m_pwd == sha_pwd:
print(‘密码正确,登录成功‘,uname)
# 将查询到的结果存储到mongo/redis中
# col.insert_one({‘username‘:uname,‘password‘:sha_pwd})
r_client.set(uname,sha_pwd)
else:
print(‘密码错误,登录失败‘)
# 6.关闭cursor对象和连接对象
cur.close()
conn.close()
except Exception as e:
print(e)

def mongo_login():
# 获取mongo的连接对象
m_client = MongoClient(host=‘localhost‘,
port=27017)
db = m_client.QQDB
col = db.QQ_users
# 根据用户名获取数据 约定mongo中的数据存储的方式 {‘username‘:uname,‘password‘:sha_pwd}
res = col.find_one({‘username‘: uname})
if res is None:
print(‘mongo中没有获取到任何数据,在mysql中完成登陆‘)
mysql_login()
else:
print(res)
m_password = res[‘password‘]
if m_password == sha_pwd:
print(‘密码正确,登录成功,mongodb‘)
else:
print(‘密码错误,登录失败,mongodb‘)

def mysql_conn():
return connect(host=‘localhost‘,
user=‘root‘,
password=‘mysql‘,
database=‘python_restore‘,
port=3306,
charset=‘utf8‘)

if __name__ == ‘__main__‘:
uname = input(‘请输入用户名:‘)
upwd = input(‘请输入密码:‘)
# sha1
s1 = sha1()
s1.update(upwd.encode())
sha_pwd = s1.hexdigest()
print(sha_pwd)

# register()
# login()

r_client = StrictRedis(host=‘192.168.85.70‘)
# 约定好如何存储数据 key value uname sha_pwd
res = r_client.get(uname)
print(res)
if res is None:
print(‘redis中没有获取到任何数据,在mysql中完成登陆‘)
mysql_login()
else:
r_pwd = res.decode()
if r_pwd == sha_pwd:
print(‘密码正确,登录成功,redis‘)
else:
print(‘密码错误,登录失败,redis‘)

好了,就先到这里吧。下一次把Python中相关的服务器这块儿代码搞一搞~可以的。

时间: 2024-10-07 22:47:20

python仙修之 入门之后不放弃?的相关文章

都说python是最佳编程入门语言,为什么你学习却是如此坎坷?

为什么都说python是最佳编程入门语言? 引用Elliott Hauser 的说法,好的编程语言学生在入门时需要获得五样东西. 非常棒的首次体验,就像一本书的第一页,首先需要"入迷",学习新知识不可避免的会遇到挫折,但要有持续的热情和好奇心,这对于那些从未接触过编码的年轻人来说是至关重要的: Web编程的能力,对于职业发展和程序工艺来说,Web编程越来越重要,学生有机会就应当掌握一定的Web架构基础: 桌面编程能力,尽管将来趋势将更多的转移到Web应用上,但没什么能比开发和运行一个本

PySide——Python图形化界面入门教程(六)

PySide——Python图形化界面入门教程(六) ——QListView和QStandardItemModel 翻译自:http://pythoncentral.io/pyside-pyqt-tutorial-qlistview-and-qstandarditemmodel/ 上一个教程中,我们讨论了Qt的QListWidget类,它用来实现简单的单列列表框(list boxes).然而,我们还需要更加灵活的widget来实现列表,Qt为此提供了QListView 来实现多种多样的项.它是一

PySide——Python图形化界面入门教程(一)

PySide——Python图形化界面入门教程(一) ——基本部件和HelloWorld 原文链接:http://pythoncentral.io/intro-to-pysidepyqt-basic-widgets-and-hello-world/ 本教程第一部分将给出PySide的最基本知识点,包含使用的对象,和一些能帮助你了解Python/Qt应用是如何构建的小例子. 首先来看一下基本的Qt对象.Qt包含了许多类去处理XML.多媒体.数据库和网络等等事物,但我们现在重点关注可视化的元素——窗

Python的简介与入门

Python的简介与入门 ·Python是一种结合了解释.性编译性.互动性和面向对象多种特性的脚本语言.对于编程初学者而言,Python易于阅读与学习,并且支持广泛的应用程序的开发与拥有支持多种平台的广泛的基础数据库. ·安装Python在Windows环境下  1.进入Python 官方网站:https://www.python.org/                 2.点击Downloads==> Downloads for Windows==> Python 3.6.2  3.下载安

Python黑客编程2 入门demo--zip暴力破解

Python黑客编程2 入门demo--zip暴力破解 上一篇文章,我们在Kali Linux中搭建了基本的Python开发环境,本篇文章为了拉近Python和大家的距离,我们写一个暴力破解zip包密码的小程序.这个例子来自于<Voilent Python>一书,这也是一本python黑客编程的入门书,推荐大家看一看. 照顾没有接触过Python编程的同学,行文可能会有些啰嗦. 废话少说,我们进入正题. 2.1 准备基本材料 在/home/ziptest/目录下,我创建了两个文件,一个test

PySide——Python图形化界面入门教程(二)

PySide——Python图形化界面入门教程(二) ——交互Widget和布局容器 ——Interactive Widgets and Layout Containers 原文链接:http://pythoncentral.io/pyside-pyqt-tutorial-interactive-widgets-and-layout-containers/ 上一个教程中,我们了解了一些QWidget提供的功能,还有一个特殊的子类QLabel.更进一步的,我们完成了一个用来说明简单Python/Q

PySide——Python图形化界面入门教程(三)

PySide——Python图形化界面入门教程(三) ——使用内建新号和槽 ——Using Built-In Signals and Slots 上一个教程中,我们学习了如何创建和建立交互widgets,以及将他们布局的两种不同的方法.今天我们继续讨论Python/Qt应用响应用户触发的事件:信号和槽. 当用户执行一个动作——点击按钮,选择组合框的值,在文本框中打字——这个widget就会发出一个信号.这个信号自己什么都不做,它必须和槽连接起来才行.槽是一个接受信号的执行动作的对象. 连接内建P

Dagger2 这次入门就不用放弃了

Dagger2 这次入门就不用放弃了 前言 之前也研究过很多次Dagger2这东西了,可能以后RxJava+Retrofit+MVP+Dagger2是Android发展的主流框架,看了Dagger2的实现代码,有点不明所以.上网也有很多文章介绍依赖注入.Dagger2的组件等等那些,这样这样这样什么组件呀.模块呀.注入呀.但是感觉对于入门来说那些文章都没有说到点子上,具体怎么用这个核心点而且应该怎么写代码?为什么这样写,并没有很明确的说明.我来回看了几遍代码之后,总结出了一点经验,不知道说的对不

利用Python进行数据分析——pandas入门

利用Python进行数据分析--pandas入门 基于NumPy建立的 from pandas importSeries,DataFrame,import pandas as pd 一.两种数据结构 1.Series 类似于Python的字典,有索引和值 创建Series #不指定索引,默认创建0-N In [54]: obj = Series([1,2,3,4,5]) In [55]: obj Out[55]: 0 1 1 2 2 3 3 4 4 5 dtype: int64 #指定索引 In