【python学习笔记】第15天

前几天是课程中的MySQL部分,就没有更新,到了与python交互的部分,有必要做一下记录。

今日关键词:python数据库

接下来看代码:

#coding=utf-8
# 因为是python2.7版本,所以必须要进行编码
# 导入MySQLdb包中的全部
from MySQLdb import *
try:
    # 在这里建立和数据库的连接
    conn = connect(host='localhost', port=3306, user='root', passwd='123456',db='practice', charset='utf8')
    #创建cursor用来操作数据库对象
    cursor1 = conn.cursor()
    # 构造sql语句
    sql = 'insert into students(name) values("神秘人")'
    # 调用cursor对象中的execute方法来执行sql语句
    cursor1.execute(sql)
    # 让事件生效
    conn.commit()
    # 关闭cursor和conn
    cursor1.close()
    conn.close()
except Exception, e:
    print(e.message)

上面这段代码是python2.7写的,因为没有找到关于mysql模块的3.x版本。

代码的含义注释写的很清楚。这里进行了数据库的插入操作,查询操作类似,不过这一次我们把它封装起来,看下面的代码

# coding=utf-8
from MySQLdb import *


class MysqlHelper(object):
    def __init__(self, host, port, user, passwd, db, charset='utf8'):
        self.host = host
        self.port = port
        self.user = user
        self.passwd = passwd
        self.db = db
        self.charset = charset

    def open(self):
        self.conn = connect(host=self.host, port=self.port, user=self.user, passwd=self.passwd, db=self.db,
                            charset=self.charset)
        self.cursor = r = self.conn.cursor()

    def close(self):
        self.cursor.close()
        self.conn.close()

    # 定义一个方法进行change|update|delete操作
    def cud(self, sql, params):
        try:
            self.open()
            self.cursor.execute(sql, params)
            self.conn.commit()
            self.close()
            print("执行完毕")
        except Exception, e:
            print(e.message)

    # 定义一个方法进行查询操作
    def all(self, sql, params=[]):
        try:
            self.open()
            self.cursor.execute(sql, params)
            result = self.cursor.fetchall()
            self.close()
            return result
        except Exception, e:
            print(e.message)

execute方法中的第二个参数是一个列表,列表中是sql语句找中替换%s的部分,这里是为了防止例如单引号之类的字符录对数据库造成的影响,sql语句中的%s代表的是任意的参数。

 我们接下来调用这个模块

用户登录:

# coding=utf-8
from mysqlserver import MysqlHelper
from hashlib import sha1

# 接收用户名和密码
username = raw_input("请输入用户名:")
passwd = raw_input("请输入密码:")

# sha1加密
s1 = sha1()
s1.update(passwd)
new_pwd = s1.hexdigest()
# print new_pwd
sql = "select passwd from client where username=%s"
# 创建数据库对象
helper = MysqlHelper('localhost', 3306, 'root', '123456', 'newuse')
result = helper.all(sql,[username])

if len(result) == 0:
    print "用户名不存在"
elif result[0][0] == new_pwd:
    print "登录成功"
else:
    print "密码错误"

用户注册:

# coding=utf-8
from mysqlserver import MysqlHelper
import hashlib

def hashopt(pwd):
    s1 = hashlib.sha1()
    s1.update(pwd)
    result = s1.hexdigest()
    return result

def register(helper, sql_judge, client):
    while True:
        name = raw_input("请输入注册的用户名:")
        judge_result = helper.all(sql_judge, [name])
        if len(judge_result) != 0:
            print "用户名已存在,请重新输入"
        else:
            while True:
                pwd1 = raw_input("请输入密码:")
                pwd2 = raw_input("请再次输入密码:")
                if pwd1 == pwd2:
                    client['name'] = name
                    new_pwd = hashopt(pwd1)
                    client['passwd'] = new_pwd
                    return
                else:
                    print "两次密码输入不一致."

def main():
    helper = MysqlHelper('localhost', 3306, 'root', '123456', 'newuse')
    sql_judge = "select * from client where username=%s"
    client = dict()
    register(helper, sql_judge, client)
    # print client

    # 构造sql语句
    sql_signin = "insert into client(username,passwd) values(%s,%s)"
    helper.cud(sql_signin, [client['name'], client['passwd']])
    print "注册成功"
#判断用户名是否存在

if __name__ == "__main__":
    main()

在这里我们使用了hashlib模块中的sha1加密。

其实python与mysql交互很简单,就那么几个函数。 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值