Python学习笔记(二十二)MySQL

参考资料:https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001391435131816c6a377e100ec4d43b3fc9145f3bb8056000

1、MySQL是Web世界中使用最广泛的数据库服务器。SQLite的特点是轻量级、可嵌入,但不能承受高并发访问,适合桌面和移动应用。而MySQL是为服务器端设计的数据库,能承受高并发访问,同时占用的内存也远远大于SQLite。此外,MySQL内部有多种数据库引擎,最常用的引擎是支持数据库事务的InnoDB。

2、使用MySQL前,需要从官网下载可用的版本(最好是免费的),我下载的是community-5.6.40.1 的Windows版本,该版本还需要电脑上安装有Visual C++ Redistributable for Visual Studio 2015

3、MySQL安装过程中需要配置root(超级用户)的密码,这个必须牢记。

4、安装完成后即可通过pythonMySQL connector实现MySQL数据库访问啦。

下面是我的学习代码:

import mysql.connector

class MySqlDB(object):
    def __init__(self, db, username, passwd):
        self.errorcode = 0
        self.connected = False
        try:
            self.conn = mysql.connector.connect(user=username, password=passwd, database = db, use_unicode=True)
            if self.conn:
                self.connected = True
        except BaseException, e:
            self.connected = False
            self.errorcode = 1
            self.error = e.message

    def close(self):
        if self.connected:
            self.conn.close()
            self.connected = False

    #执行查询语句
    def executeSQL(self, sql):
        self.errorcode = 0
        if self.connected:
            try:
                cursor = self.conn.cursor()
                cursor.execute(sql)
                cursor.close()
                cursor = None
            except BaseException, e:
                self.errorcode = 5
                self.error = e.message
            finally:
                if cursor:
                    cursor.close()
        else:
            self.errorcode = 1

    #查询并获取结果
    def getValues(self, sql):
        self.errorcode = 0
        values = None
        if self.connected:
            try:
                cursor = self.conn.cursor()
                cursor.execute(sql)
                values = cursor.fetchall()
                cursor.close()
                cursor = None
            except BaseException, e:
                self.errorcode = 4
                self.error = e.message
            finally:
                if cursor:
                    cursor.close()
        else:
            self.errorcode = 1
        return values

    #创建表
    def createTable(self, tablename, fields):
        self.errorcode = 0
        if self.connected:
            try:
                cursor = self.conn.cursor()
                if cursor:
                    sFields = ''
                    for s in fields:
                        if sFields != '':
                            sFields = sFields + ','
                        sFields = sFields + s
                    sql = 'CREATE TABLE %s(%s)' % (tablename, sFields)
                    cursor.execute(sql)
                    cursor.close()
                    cursor = None
                    self.conn.commit()
                else:
                    self.errorcode = 2
            except BaseException, e:
                self.errorcode = 3
                self.error = e.message
            finally:
                if cursor:
                    cursor.close()
        else:
            self.errorcode = 1

def Test():
    #输入用户名
    u = raw_input('input a username:')
    #输入密码
    p = raw_input('input a password:')
    #输入数据库文件名
    d = raw_input('input a database name:')
    #连接数据库
    db = MySqlDB(d, u, p)
    if not db or not db.connected:
        print 'connect failure'
        if db:
            print 'error %d:%s' % (db.errorcode, db.error)
        return
    #输入表名
    t = raw_input('input a tablename:')
    #输入字段定义
    fields = []
    while True:
        f = raw_input('input field define, none to break:')
        if f and f != '':
            fields.append(f)
        else:
            break
    #创建表
    db.createTable(t, fields)
    if db.errorcode == 0:
        print 'create successfull!'
    else:
        print 'create failure, error: %d, %s' % (db.errorcode, db.error)   
    #执行SQL语句
    sql = raw_input('input a sql to execute:')
    db.executeSQL(sql)
    if db.errorcode != 0:
        print 'error on execute SQL %s: %d %s' % (sql, db.errorcode, db.error)
    else:
        print 'execute successful!'
    #查询
    values = db.getValues('SELECT * FROM %s' % t)
    if db.errorcode == 0:
        print values
    else:
        print 'error on query table %s:%d %s' % (t, db.errorcode, db.error)
    #关闭数据库连接
    db.close()
今天就学习到这里,下一节准备学习一下Python访问其他常用数据库的方法。

猜你喜欢

转载自blog.csdn.net/alvin_2005/article/details/80603689
今日推荐