Python accesses the MySQL database and supports addition, deletion, modification, and query.

Source: Internet
Author: User

Python accesses the MySQL database and supports addition, deletion, modification, and query.
Overview:

I want to know more about database access operations. However, since I recently learned Python, I will use Python to implement it below. These include creating databases and data tables, inserting records, deleting records, modifying record data, querying data, deleting data tables, and deleting databases. Another point is that we 'd better use a newly defined class to deal with it. This will make it easier to use in the future (only import is required to avoid duplicate manufacturing wheels ).

Implementation features:

1. encapsulate a DB class

2. Database Operations: create databases and data tables

3. Database Operations: insert records

4. Database Operation: insert multiple records at a time

5. Database Operations: delete records

6. Database Operations: Modify Record Data

7. Database Operation: Modify multiple records at a time

8. Database Operations: query data

9. Database Operation: delete a data table

10. Database Operation: delete a database

Database Class Definition:

HeroDB. py

 

#!/usr/bin/env pythonimport MySQLdbDATABASE_NAME = 'hero'class HeroDB:    # init class and create a database    def __init__(self, name, conn, cur):        self.name = name        self.conn = conn        self.cur = cur        try:            cur.execute('create database if not exists ' + name)            conn.select_db(name)            conn.commit()        except MySQLdb.Error, e:            print "Mysql Error %d: %s" % (e.args[0], e.args[1])                            # create a table    def createTable(self, name):        try:            ex = self.cur.execute            if ex('show tables') == 0:                ex('create table ' + name + '(id int, name varchar(20), sex int, age int, info varchar(50))')                self.conn.commit()        except MySQLdb.Error, e:            print "Mysql Error %d: %s" % (e.args[0], e.args[1])                # insert single record    def insert(self, name, value):        try:            self.cur.execute('insert into ' + name + ' values(%s,%s,%s,%s,%s)', value)        except MySQLdb.Error, e:            print "Mysql Error %d: %s" % (e.args[0], e.args[1])                # insert more records    def insertMore(self, name, values):        try:            self.cur.executemany('insert into ' + name + ' values(%s,%s,%s,%s,%s)', values)        except MySQLdb.Error, e:            print "Mysql Error %d: %s" % (e.args[0], e.args[1])                # update single record from table    # name: table name    # values: waiting to update data    def updateSingle(self, name, value):        try:            # self.cur.execute('update ' + name + ' set name=' + str(values[1]) + ', sex=' + str(values[2]) + ', age=' + str(values[3]) + ', info=' + str(values[4]) + ' where id=' + str(values[0]) + ';')            self.cur.execute('update ' + name + ' set name=%s, sex=%s, age=%s, info=%s where id=%s;', value)        except MySQLdb.Error, e:            print "Mysql Error %d: %s" % (e.args[0], e.args[1])                # update some record from table    def update(self, name, values):        try:            self.cur.executemany('update ' + name + ' set name=%s, sex=%s, age=%s, info=%s where id=%s;', values)        except MySQLdb.Error, e:            print "Mysql Error %d: %s" % (e.args[0], e.args[1])                # get record count from db table    def getCount(self, name):        try:            count = self.cur.execute('select * from ' + name)            return count        except MySQLdb.Error, e:            print "Mysql Error %d: %s" % (e.args[0], e.args[1])                # select first record from database    def selectFirst(self, name):        try:            self.cur.execute('select * from ' + name + ';')            result = self.cur.fetchone()            return result        except MySQLdb.Error, e:            print "Mysql Error %d: %s" % (e.args[0], e.args[1])                # select last record from database    def selectLast(self, name):        try:            self.cur.execute('SELECT * FROM ' + name + ' ORDER BY id DESC;')            result = self.cur.fetchone()            return result        except MySQLdb.Error, e:            print "Mysql Error %d: %s" % (e.args[0], e.args[1])                # select next n records from database    def selectNRecord(self, name, n):        try:            self.cur.execute('select * from ' + name + ';')            results = self.cur.fetchmany(n)            return results        except MySQLdb.Error, e:            print "Mysql Error %d: %s" % (e.args[0], e.args[1])                # select all records    def selectAll(self, name):        try:            self.cur.execute('select * from ' + name + ';')            self.cur.scroll(0, mode='absolute') # reset cursor location (mode = absolute | relative)            results = self.cur.fetchall()            return results        except MySQLdb.Error, e:            print "Mysql Error %d: %s" % (e.args[0], e.args[1])                # delete a record    def deleteByID(self, name, id):        try:            self.cur.execute('delete from ' + name + ' where id=%s;', id)        except MySQLdb.Error, e:            print "Mysql Error %d: %s" % (e.args[0], e.args[1])        # delete some record    def deleteSome(self, name):        pass        # drop the table    def dropTable(self, name):        try:            self.cur.execute('drop table ' + name + ';')        except MySQLdb.Error, e:            print "Mysql Error %d: %s" % (e.args[0], e.args[1])                # drop the database    def dropDB(self, name):        try:            self.cur.execute('drop database ' + name + ';')        except MySQLdb.Error, e:            print "Mysql Error %d: %s" % (e.args[0], e.args[1])                def __del__(self):        if self.cur != None:            self.cur.close()        if self.conn != None:            self.conn.close()

Example:

TestHeroDB. py

 

#!/usr/bin/env pythonimport MySQLdbfrom heroDB import HeroDBdef main():    conn = MySQLdb.connect(host='localhost', user='root', passwd='260606', db='hero', port=3306, charset='utf8')    cur = conn.cursor()        # ------------------------------------------- create -----------------------------------------------------    hero = HeroDB('hero', conn, cur)    hero.createTable('heros')        # ------------------------------------------- insert -----------------------------------------------------    hero.insert('heros', [3, 'Prophet', 0, 2000, 'The hero who in fairy tale.'])    # ------------------------------------------- select -----------------------------------------------------    print '-' * 60    print 'first record'    result = hero.selectFirst('heros')    print result        print '-' * 60    print 'last record'    result = hero.selectLast('heros')    print result        print '-' * 60    print 'more record'    results = hero.selectNRecord('heros', 3)    for item in results:        print item        print '-' * 60    print 'all record'    results = hero.selectAll('heros')    for item in results:        print item            # ------------------------------------------- update -----------------------------------------------------    hero.updateSingle('heros', ['Zeus', 1, 22000, 'The god.', 2])        values = []    values.append(['SunWukong', 1, 1300, 'The hero who in fairy tale.', 1])    values.append(['Zeus', 1, 50000, 'The king who in The Quartet myth.', 2])    values.append(['Prophet', 1, 20000, 'The hero who in fairy tale.3', 3])    hero.update('heros', values)        # ------------------------------------------- delete -----------------------------------------------------    hero.deleteByID('heros', 1)        hero.dropTable('heros')        hero.dropDB('hero')    if __name__ == '__main__':    main()

Note: Please do not use them without thinking. If you want to implement a function, it is best to comment out other function points so as to comply with the unit test specifications.

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.