mysql与python的交互(封装,模拟用户注册,登录的案例)

版权声明:一个苦逼初学者的原创小博客。 https://blog.csdn.net/SenZendao/article/details/82228031

好,今晚我申正道打了鸡血,疯狂总结,主要不想一个数据库拖太久时间了,今天好像都第三天了,后面的东西还很多,这样只会把知识越压越多,所以让我们干起来了吧,这篇主要就说一下mysql数据库与python的交互,代码的封装和使用。

直接把我写的源代码放上来吧,太长了不好截图。

import pymysql
import hashlib

#创建一个类
class MysqlHelper():
    #初始化属性
    def __init__(self, host,database, user, password,port=3306,charset='utf8'):
        self.host=host
        self.port=port
        self.db=database
        self.user=user
        self.passwd=password
        self.charset=charset
    #链接的方法
    def connect(self):
        self.conn=pymysql.connect(host=self.host, port=self.port, db=self.db, user=self.user, password=self.passwd, charset=self.charset)
        self.cursor=self.conn.cursor()
    #关闭的方法
    def close(self):
        self.cursor.close()
        self.conn.close()
    #查询一个的方法
    def select_one(self,sql,params=[]):
        result=None
        try:
            self.connect()
            self.cursor.execute(sql, params)
            result = self.cursor.fetchone()
            self.close()
        except Exception as e:
            print(e)
        return result
    #查询所有的方法
    def select_all(self,sql,params=[]):
        list=()
        try:
            self.connect()
            self.cursor.execute(sql,params)
            list=self.cursor.fetchall()
            self.close()
        except Exception as e:
            print(e)
        return list

    def __edit(self,sql,params):
        count=0
        try:
            self.connect()
            count=self.cursor.execute(sql,params)
            self.conn.commit()
            self.close()
        except Exception as e:
            print(e)
        return count
    #增加的方法
    def insert(self, sql, params=[]):
        return self.__edit(sql, params)
    #修改的方法
    def update(self, sql, params=[]):
        return self.__edit(sql, params)
    #删除的方法
    def delete(self, sql, params=[]):
        return self.__edit(sql, params)
    #md5加密的方法
    def my_md5(self, pwd):
        my_md5 = hashlib.md5()
        my_md5.update(pwd.encode('utf-8'))
        return my_md5.hexdigest()

其实就是使用面向的对象的思想,将代码封装起来,使用的时候直接导入,进行调用,这样就避免了我们每次都要打很多代码,这样提高了代码的简洁性,而且提高了代码的可拓展性。下面我们就写个代码来使用一下。

from fengzhuang import MysqlHelper
import hashlib




def register():
    name = input("用户名>")
    pwd = input("密码>")

    helper = MysqlHelper(host="localhost", database="zhengdao", user="root", password="915210")
    ret = helper.insert("insert into t_user(name,pwd) values(%s,%s)",[name,helper.my_md5(pwd)])
    if ret>0:
        print("成功")
    else:
        print("失败")


def login():
    name = input("用户名>")
    pwd = input("密码>")

    helper = MysqlHelper(host="localhost", database="zhengdao", user="root", password="915210")
    ret = helper.select_one("select count(*) from t_user where name=%s and pwd=%s",[name,helper.my_md5(pwd)])
    if ret[0]>0:
        print("成功")
    else:
        print("失败")

def main():
    while True:
        choice = input("1、注册1   2、登录 ")
        if choice == "1":
            register()
        elif choice == "2":
            login()


if __name__ == '__main__':
    main()


首先导入我们封装的py文件,然后创建对象,直接调用我们写好的方法,这样是不是就简单了很多?避免了我们每次都要创建连接对象,少写了很多代码啊。呃,这个代码是我今天白天提前写好的,不是现打的,我的速度还没有那么快,距离上篇发表仅仅十分钟,对,这案例,代码啥的都是我提前写好的。。。

大家如果要使用我的源代码,需要进行修改一些东西。比如自己的连接服务端的IP地址,还有用户名,密码等,数据库表中的名字,信息也不一样,这些都需要进行修改的,大家需要注意一下。

好了今天就可以结束了,总结肯定不是很完善,所以以后会慢慢进行补充,从明天开始,应该就要总结前端的一些东西了。还是那句话,风雨里做事,阳光下做人,不要以为程序员起薪很高,需要付出的东西也很多,技术一直在更新,如果不保持一颗学习的心,那么你迟早被这个行业所淘汰!

猜你喜欢

转载自blog.csdn.net/SenZendao/article/details/82228031