zoukankan      html  css  js  c++  java
  • python3使用MySQL connector对MySQL数据库进行操作

          python可以使用多种方法对MySQL数据库进行操作,如MySQLDB、PyMySQL、MYSQL Connector 等,其中 MYSQL Connector是MYSQL官方的数据库驱动,我们可以在MYSQL 的官网上下载和安装,而且在官方网站上还有使用文档,使用起来非常便捷。

          MySQL connector 有针对C、C++、ODBC、PHP 、Python等的驱动,我们只需要关注Python的驱动即可,官网网址如下:

          https://dev.mysql.com/doc/connector-python/en/

          目前,有两个 MySQL 驱动:

          mysql-connector-python:是 MySQL 官方的纯 Python 驱动;

          MySQL-python :是封装了 MySQL C驱动的 Python 驱动。

          笔者一般使用 mysql-connector-python,当然,驱动可以在官网上下载安装,也可以使用pip进行安装。

    pip install mysql-connector-python          
    pip install MySQL-python

          使用方法也很简单,按照通常的数据库连接即可,当然,如果有其它的应用,如存储过程等的写法,可以参考官网的文档。

          一般来说,通过Python读写数据库,要有以下步骤:连接数据库、获取游标、运行SQL语句、获取结果、关闭数据库。

          连接数据库:

    import mysql.connector
    
    def connectdb():
        print('连接到mysql服务器...')
        # 打开数据库连接
        # 用户名:root, 密码:123456,用户名和密码需要改成你自己的mysql用户名和密码,并且要创建数据库TESTDB。
        db = mysql.connector.connect(user="root", passwd="123456.", database="TESTDB", use_unicode=True)
        print('连接上了!')
        return db

          当然,我们也可以使用字典方式来保存连接参数,使用try......except语句块来捕获错误。

    import mysql.connector
    from mysql.connector import errorcode
    
    #连接参数
    config = {
        'user': 'root',
        'password': '123456',
        'database': 'TESTDB',
        'host': '127.0.0.1',
    }
    
    
    def connectdb():
        try:
            print('连接mysql数据库...')
            #打开数据库连接
            db = mysql.connector.connect(**config)
            #返回数据库连接
            return db
        except mysql.connector.Error as err:
            if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
                print("用户名或密码错误")
            elif err.errno == errorcode.ER_BAD_DB_ERROR:
                print("数据库不存在")
            else:
                print(err)
    
    db = connectdb() 

          在连上数据库后,我们就可以做相关的增、删、改、查动作了。

          创建表:

    def createtable(db):
        # 使用cursor()方法获取操作游标 
        cursor = db.cursor()
    
        # 如果存在表Sutdent先删除
        cursor.execute("DROP TABLE IF EXISTS Student")
        sql = """CREATE TABLE Student (
                ID CHAR(10) NOT NULL,
                Name CHAR(8),
                Grade INT )"""
    
        # 创建Sutdent表
        cursor.execute(sql)

          插入数据:

    def insertdb(db):
        # 使用cursor()方法获取操作游标 
        cursor = db.cursor()
    
        # SQL 插入语句
        sql = """INSERT INTO Student
             VALUES ('001', 'CZQ', 70),
                    ('002', 'LHQ', 80),
                    ('003', 'MQ', 90),
                    ('004', 'WH', 80),
                    ('005', 'HP', 70),
                    ('006', 'YF', 66),
                    ('007', 'TEST', 100)"""
    
        #sql = "INSERT INTO Student(ID, Name, Grade) 
        #    VALUES ('%s', '%s', '%d')" % 
        #    ('001', 'HP', 60)
        try:
            # 执行sql语句
            cursor.execute(sql)
            # 提交到数据库执行
            db.commit()
        except:
            # Rollback in case there is any error
            print '插入数据失败!'
            db.rollback()

          查询数据:

    def querydb(db):
        # 使用cursor()方法获取操作游标 
        cursor = db.cursor()
    
        # SQL 查询语句
        #sql = "SELECT * FROM Student 
        #    WHERE Grade > '%d'" % (80)
        sql = "SELECT * FROM Student"
        try:
            # 执行SQL语句
            cursor.execute(sql)
            # 获取所有记录列表
            results = cursor.fetchall()
            for row in results:
                ID = row[0]
                Name = row[1]
                Grade = row[2]
                # 打印结果
                print "ID: %s, Name: %s, Grade: %d" % 
                    (ID, Name, Grade)
        except:
            print "Error: unable to fecth data"

          删除数据:

    def deletedb(db):
        # 使用cursor()方法获取操作游标 
        cursor = db.cursor()
    
        # SQL 删除语句
        sql = "DELETE FROM Student WHERE Grade = '%d'" % (100)
    
        try:
           # 执行SQL语句
           cursor.execute(sql)
           # 提交修改
           db.commit()
        except:
            print '删除数据失败!'
            # 发生错误时回滚
            db.rollback()

          更新数据:

    def updatedb(db):
        # 使用cursor()方法获取操作游标 
        cursor = db.cursor()
    
        # SQL 更新语句
        sql = "UPDATE Student SET Grade = Grade + 3 WHERE ID = '%s'" % ('003')
    
        try:
            # 执行SQL语句
            cursor.execute(sql)
            # 提交到数据库执行
            db.commit()
        except:
            print '更新数据失败!'
            # 发生错误时回滚
            db.rollback()

          关闭数据库连接:

    def closedb(db):
        db.close()

          然后在 main 主程序中,就可以这样应用了:

    def main():
        db = connectdb()    # 连接MySQL数据库
    
        createtable(db)     # 创建表
        insertdb(db)        # 插入数据
        print '
    插入数据后:'
        querydb(db) 
        deletedb(db)        # 删除数据
        print '
    删除数据后:'
        querydb(db)
        updatedb(db)        # 更新数据
        print '
    更新数据后:'
        querydb(db)
    
        closedb(db)         # 关闭数据库
    
    if __name__ == '__main__':
        main()
  • 相关阅读:
    Keras学习笔记——Hello Keras
    记一次线上事故的JVM内存学习
    postgresql中的search_path
    CentOS7安装setuptools
    CentOS7安装EPEL的两种方式
    Ncures库的介绍与安装
    CentOs6.5 安装Zlib
    Centos 安装zlib
    Windows如何压缩tar.gz格式
    nginx运行文件出错env: /etc/init.d/nginx: No such file or directory
  • 原文地址:https://www.cnblogs.com/dhanchor/p/9314298.html
Copyright © 2011-2022 走看看