Rumah > pembangunan bahagian belakang > Tutorial Python > 三种Python操作MySQL数据库的方法

三种Python操作MySQL数据库的方法

零到壹度
Lepaskan: 2018-04-04 17:52:30
asal
1580 orang telah melayarinya

这篇文章主要介绍了三种Python操作MySQL数据库的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

1. MySQLdb 的使用

(1)  什么是MySQLdb

  MySQLdb 是用于 Python 连接 MySQL 数据库的接口,它实现了 Python 数据库 API 规范 V2.0,基于 MySQL C API 上建立的。

(2)  源码安装 MySQLdb: https://pypi.python.org/pypi/MySQL-python

1

2

3

4

$ tar zxvf MySQL-python-*.tar.gz

$ cd MySQL-python-*

$ python setup.py build

$ python setup.py install

Salin selepas log masuk

(3) MySQLdb 的使用:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

#!/usr/bin/env python

# coding=utf-8

 

import MySQLdbdef connectdb():

    print('连接到mysql服务器...')   

    # 打开数据库连接

    # 用户名:hp, 密码:Hp12345.,用户名和密码需要改成你自己的mysql用户名和密码,并且要创建数据库TESTDB,并在TESTDB数据库中创建好表Student

    db = MySQLdb.connect("localhost","hp","Hp12345.","TESTDB")

    print('连接上了!')   

    return db

     

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()def main():

    db = connectdb()    # 连接MySQL数据库

 

    createtable(db)     # 创建表

    insertdb(db)        # 插入数据

    print '\n插入数据后:'

    querydb(db)

    deletedb(db)        # 删除数据

    print '\n删除数据后:'

    querydb(db)

    updatedb(db)        # 更新数据

    print '\n更新数据后:'

    querydb(db)

 

    closedb(db)         # 关闭数据库if __name__ == '__main__':

    main()

Salin selepas log masuk

运行结果:

这里写图片描述

2. PyMySQL 的使用

(1) 什么是 PyMySQL

PyMySQLPython 中用于连接 MySQL 服务器的一个库,它遵循 Python 数据库 API 规范 V2.0,并包含了 pure-Python MySQL 客户端库。

(2) 安装 PyMysql:

1

pip install PyMysql

Salin selepas log masuk

(3) 使用 PyMySQL:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

#!/usr/bin/env python# coding=utf-8import pymysqldef connectdb():

    print('连接到mysql服务器...')    # 打开数据库连接

    # 用户名:hp, 密码:Hp12345.,用户名和密码需要改成你自己的mysql用户名和密码,并且要创建数据库TESTDB,并在TESTDB数据库中创建好表Student

    db = pymysql.connect("localhost","hp","Hp12345.","TESTDB")

    print('连接上了!')    return dbdef 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()def main():

    db = connectdb()    # 连接MySQL数据库

 

    createtable(db)     # 创建表

    insertdb(db)        # 插入数据

    print '\n插入数据后:'

    querydb(db)

    deletedb(db)        # 删除数据

    print '\n删除数据后:'

    querydb(db)

    updatedb(db)        # 更新数据

    print '\n更新数据后:'

    querydb(db)

 

    closedb(db)         # 关闭数据库if __name__ == '__main__':

    main()

Salin selepas log masuk

运行结果:

这里写图片描述

3. mysql.connector 的使用

(1) 什么是 mysql.connector

  由于 MySQL 服务器以独立的进程运行,并通过网络对外服务,所以,需要支持 PythonMySQL 驱动来连接到 MySQL 服务器。

目前,有两个 MySQL 驱动:

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

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

(2) 安装 mysql.connector:

1

pip install mysql-connector-pythonpip install MySQL-python

Salin selepas log masuk

(3) 使用 mysql.connector:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

#!/usr/bin/env python# coding=utf-8import mysql.connectordef connectdb():

    print('连接到mysql服务器...')    # 打开数据库连接

    # 用户名:hp, 密码:Hp12345.,用户名和密码需要改成你自己的mysql用户名和密码,并且要创建数据库TESTDB,并在TESTDB数据库中创建好表Student

    db = mysql.connector.connect(user="hp", passwd="Hp12345.", database="TESTDB", use_unicode=True)

    print('连接上了!')    return dbdef 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()def main():

    db = connectdb()    # 连接MySQL数据库

 

    createtable(db)     # 创建表

    insertdb(db)        # 插入数据

    print '\n插入数据后:'

    querydb(db)

    deletedb(db)        # 删除数据

    print '\n删除数据后:'

    querydb(db)

    updatedb(db)        # 更新数据

    print '\n更新数据后:'

    querydb(db)

 

    closedb(db)         # 关闭数据库if __name__ == '__main__':

    main()

Salin selepas log masuk

运行结果:

这里写图片描述

Atas ialah kandungan terperinci 三种Python操作MySQL数据库的方法. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan