python每日一练之mysql.connector

  python的第三方数据库驱动器蛮多的,我用的是官方驱动MYSQL-connector,网友可以到https://pypi.org/下载自行安装。

  更多的MYSQL数据库语句见https://www.cnblogs.com/Cc905/p/13178610.html

1.数据库的连接

import mysql.connector


if __name__ == "__main__":
    db = mysql.connector.connect(
        host="localhost",
        user="root",
        passwd="xxx",
        db="my_db3",
        buffered=True 
) db_cursor = db.cursor()

也可以在连接数据库时,不指定数据库,在后面再执行“use database  db_name”

buffered=Ture 是为了查询做准备,如果没有声明buffed,并且上个查询没有取出所有的结果行,连续查询会出错。

# 创建数据库
    create_db = "create database my_db3"
    db_cursor.execute(create_db)
    use_db = "use database my_db3"

2.表的创建和变更

 # 创建表
    create_table_stu = "create table stud(SID int unsigned auto_increment primary key," \
                       "name varchar(10), sex varchar(10))"
    db_cursor.execute(create_table_stu)
    # alter表
    # 增加列
    add_column = "alter table stud add age int after sex"
    db_cursor.execute(add_column)
    # 更改列
    change_column = "alter table stud change age agee int"
    db_cursor.execute(change_column)
    # 删除列
    drop_column = "alter table stud drop agee"
    db_cursor.execute(drop_column)
    # 重命名表
    rename_table = "alter table stud rename students"
    db_cursor.execute(rename_table)

3.数据的增删查改

当表中数据有更新时,需要在更新数据后执行db.commit(),db_cursor.lastrowid返回修改行的最后一行行号,rowcount返回修改的总行数。

# 插入数据
    insert_value = "insert into students(SID,name,sex) values(null,'王五','男')"
    db_cursor.execute(insert_value)
    db.commit()
    print(db_cursor.rowcount)
    insert_values = "insert into students(SID,name,sex) values(%s,%s,%s)"
    values = [(None, 'test1', ''), (None, 'test2', ''), (None, 'test3', '')]
    db_cursor.executemany(insert_values, values)
    db.commit()
    print(db_cursor.lastrowid)
    # 更新数据
    update_value = 'update students set sex="男" where name="test2"'
    db_cursor.execute(update_value)
    db.commit()
    # 删除数据
    delete_row = "delete from students where name = 'test2'"
    db_cursor.execute(delete_row)
    db.commit()

查询数据

# 查询数据
    select_sql1 = "select * from students"
    my_cursor.execute(select_sql1)
    select_result1 = my_cursor.fetchone()  # 返回缓冲区的一行
    print(select_result1)

    # 如果没有声明buffed,并且上个查询没有取出所有的结果行,连续查询会出错。
    select_sql2 = "select * from students limit 3 offset 1"
    my_cursor.execute(select_sql2)
    select_result2 = my_cursor.fetchall()  # 获取所有查询结果
    print(select_result2)

使用后,记得关闭db_cursor和db,关于数据库的语句和复杂的查询、数据类型,后面在温习时会再另写一篇文章。

posted @ 2020-08-07 20:05  Cc905  阅读(165)  评论(0编辑  收藏  举报