python操作数据库学习,自封装一个类来处理

本文介绍了一个简单的Python类,用于管理网站数据库。该类可以连接到MySQL数据库,创建数据库和表格,并提供增删查改等基本操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


自封装一个简单的类来测试一下,挺不错。。。



import MySQLdb


class WebSiteDB:
    def __init__(self, dbname = 'website', hostname = 'localhost', username = 'root', password = 'test'):
        self.dbname = dbname
        self.hostname = hostname
        self.username = username
        self.password = password
        self.conn = None
        self.cursor = None
        self.__connectMySql()
        self.__createDB()
        self.__selectDB()

    def __connectMySql(self):
        try:
            self.conn = MySQLdb.connect(host = self.hostname, user = self.username, passwd = self.password)
            self.cursor = self.conn.cursor()
        except:
            print 'fail to connect to MySQLdb '

    def __createDB(self):
        try:
            sqlcmd = 'create database if not exists ' + self.dbname
            self.cursor.execute(sqlcmd)
        except:
            print 'fail to create database ' + self.dbname
            return None
        
    def __selectDB(self):
        try:
            self.conn.select_db(self.dbname)
        except:
            print 'fail to select_db ', self.dbname

    def createTable(self, tablename):
        try:
            if tablename is None:
                return None
            sqlcmd = 'create table if not exists ' + tablename + '(website varchar(50), url varchar(300))'
            self.cursor.execute(sqlcmd)
        except:
            print 'fail to create table ' + tablename
            return None

    def fetchOne(self, tablename):
        try:
            self.cursor.execute('select * from ' + tablename)
            result = self.cursor.fetchone()
            return result
        except:
            print 'fail to fetchOne'
            return None

    def fetchMany(self, tablename, num):
        try:
            self.cursor.execute('select * from ' + tablename)
            results = self.cursor.fetchmany(num)
            return results
        except:
            print 'fail to fetchMany ', num
            return None

    def fetchAll(self, tablename):
        try:
            self.cursor.execute('select * from ' + tablename)
            results = self.cursor.fetchall()
            return results
        except:
            print 'fail to fetchAll'
            return None
    
    def insertOneRd(self, tablename, value):
        try:
            sqlcmd = 'insert into ' + tablename + ' values(%s, %s)'
            self.cursor.execute(sqlcmd, value);
        except:
            print 'fail to insertOneRd'
            return None

    def insertManyRd(self, tablename, values):
        try:
            sqlcmd = 'insert into ' + tablename + ' values(%s, %s)'
            self.cursor.executemany(sqlcmd, values)
        except:
            print 'fail to insetManyRd'
            return None

    def droptable(self, tablename):
        while True:
            self.cursor.execute('show tables like "%s%%"' % tablename)
            tables = self.cursor.fetchall()
            if len(tables) == 0:
                break
            for x in tables:
                try:
                    self.cursor.execute('drop table %s' % x)
                    self.conn.commit()
                except:
                    continue




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值