我是靠谱客的博主 激情香菇,最近开发中收集的这篇文章主要介绍python连接Mysql数据库之mysql connector连接数据库,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

python3.0操作Mysql数据库有两种驱动方式,分别是pyMysql和mysql.connector
(1)PyMySQL 是 Python 中用于连接 MySQL 服务器的一个库,它遵循 Python 数据库 API 规范 V2.0,并包含了 pure-Python MySQL 客户端库。
MySQL-python :是封装了 MySQL C驱动的 Python 驱动。
(2)mysql.connector: MySQL 服务器以独立的进程运行,并通过网络对外服务,所以,需要支持 Python 的 MySQL 驱动来连接到 MySQL 服务器。
mysql-connector-python:是 MySQL 官方的纯 Python 驱动;

使用mysql connector连接数据库

1.1 安装mysql-connector-python驱动

pip install mysql-connector-python

1.2 使用mysql-connector
1.2.1 连接数据库
连接数据库可以使用connector类的connect()方法,传入服务器、端口号、用户名、密码、数据库等参数,其中服务器与端口号可省略,默认为localhost:3306。

def connectdb():
    print("请连接数据库........")
    db = mysql.connector.connect(host='localhost',
        port='3306',
        user="root",
        password="123456",
        database="Test")
    print("连接数据库成功")
    return db

1.2.2 数据库、数据表操作
对数据库、数据表的操作属于模式定义语言(DDL),所有DDL语句的执行都是依赖于一个叫cursor的数据结构进行操作的。通过从connect对象中获取cursor对象后就可以进行数据库、表的相关操作了。例如创建一个数据库、数据表、操作数据表等

	python中三个双引号的作用
	1.进行多行注释
	2.定义多行字符串
#3. 创建数据表
def createtable(db):
    cursor = db.cursor()    #使用cursor()获取操作游标
    cursor.execute("DROP TABLE IF EXISTS student")    #检查是否存在数据表,如果存在则删除
    sql = """CREATE TABLE student(
            id INT(20) NOT NULL AUTO_INCREMENT,
            stuname VARCHAR(20) DEFAULT NULL COMMENT '学生姓名',
            stusex INT(20) DEFAULT NULL COMMENT '性别',
            PRIMARY KEY(id)
    )"""

    cursor.execute(sql)     #创建新的student表

1.2.3 对表数据增删改
插入、删除、修改操作依旧是通过cursor对象来实现,通过cursor的execute()方法执行SQL操作,参数是要执行的SQL语句。
(1)插入数据
SQL语句中的变量可以用%s的形式作为占位符
插入数据的方式有三种:元祖、字典、数组
元祖:以python中元组的形式在执行时将变量填入

 sql = "INSERT INTO student (stuname, stusex) VALUES (%s, %s)"
 val = [
 		("张三", "男"),
    	("李四","女"),
    	("王五","男"),
   		("牛六","男")
     ]
  cursor.executemany(sql,val)
  db.commit()

注意元组的特殊用法:空元组以及只包含一个元素的元组
在执行完所有的SQL操作后记得要通过数据库对象的**commit()**将操作事务提交到数据库,数据表内容有更新就必须要用到commit()方法
如果需要撤销则通过rollback()方法回滚操作。

#4. 插入数据
def insertdb(db):
    cursor = db.cursor()  # 使用cursor()获取操作游标
    #SQL 插入语句
    sql = """INSERT INTO student (id, stuname, stusex) VALUES
            ("1","张三","男"),
            ("2","李四","女"),
            ("3","王五","男"),
            ("4","牛六","男")
            """
    try:
        # 执行SQL语句
        cursor.execute(sql)
        # 通过数据库对象的commit()将操作事务提交到数据库
        db.commit()
        print("3.成功插入%d条数据" % (cursor.rowcount))
    except:
        print("插入数据失败")
        #需要撤销
        db.rollback()

(2)修改、删除数据
修改、删除数据的方法与插入类似,只需要把对应的SQL语句和变量值传给execute()函数即可。
删除数据:

sql = "DELETE FROM student WHERE stuname = %s"
val = ('张三',)   #元组中只包含一个元素时,需要在这个元祖后面加一个逗号才能生效
# 执行SQL语句
cursor.execute(sql,val)
# 通过数据库对象的commit()将操作事务提交到数据库
db.commit()

修改数据:

#更新数据
sql = "UPDATE student SET stuname = %s WHERE id = %s"
val = ('hello', '002')  # 元组中只包含一个元素时,需要在这个元祖后面加一个逗号才能生效
cursor.execute(sql, val)
# 通过数据库对象的commit()将操作事务提交到数据库
db.commit()

1.2.4 查询数据表
执行查询操作和之前类似,都是通过execute()执行对应的SQL语句,在执行时将相应的数据填入即可

(1)按条件查询数据结果

 #按条件查询
    sql = """SELECT stuname,stusex FROM student WHERE id between %s AND  %s"""

    try:
        # 执行SQL语句
        cursor.execute(sql,(10,20))
        for (stuname,stusex) in cursor:
            print("%s的性别为%s" % (stuname, stusex))
    except:
        print("Error: unable to fecth data")

(2)查询所有学生信息
也可以通过cursor的fetchall()、fetchone()方法取得所有或一条结果集。

def querydb(db):
    cursor = db.cursor()  # 使用cursor()获取操作游标

    #SQL 查询语句,查询所有学生信息
    sql = "SELECT * FROM student"

    try:
        # 执行SQL语句
        cursor.execute(sql)
        #获取所有记录列表
        result = cursor.fetchall()
        for row in result:
            id = row[0]
            stuname = row[1]
            stusex = row[2]
            #打印结果
            print("id:%s, stuname:%s, stusex:%s"  %(id, stuname, stusex))


    except:
        print("Error: unable to fecth data")

主函数及入口函数:

def main():
    db = connectdb()    #连接数据库
    createtable(db)     #创建表
    insertdb(db)        #插入数据
    print("4.插入操作后查询到的数据为")
    querydb(db)  # 查询数据
    deletedb(db)    #删除数据
    print("删除操作后查询到的数据为")
    querydb(db)         #查询数据
    updatedb(db)        #更新数据
    print("更新操作后查询到的数据为")
    querydb(db)

    closedb(db)


if __name__ == '__main__':
    main()

if __name__ == '__main__:' main()
功能及原理
python文件可以用到两个地方,1.直接作为脚本运行;2.import到其他python文件中被调用(模块重用)
上述语句在作为脚本文件执行时if name == 'main:后面的语句才会被执行到。被import到其他文件中if name == 'main:后面的语句不会被执行到。因为每个python模块即.py文件都有一个内置变量_name_,当运行模块被执行的时候,__name__等于文件名(包含了后缀.py);如果import到其他模块中,则__name__等于模块名称(不包含后缀.py)。而“main”等于当前执行文件的名称(包含了后缀.py)。进而当模块被直接执行时,name == 'main’结果为真。

最后

以上就是激情香菇为你收集整理的python连接Mysql数据库之mysql connector连接数据库的全部内容,希望文章能够帮你解决python连接Mysql数据库之mysql connector连接数据库所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部