zoukankan      html  css  js  c++  java
  • python每日一练之mysql.connector

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

    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,关于数据库的语句和复杂的查询、数据类型,后面在温习时会再另写一篇文章。

  • 相关阅读:
    Struts2+Spring3+Mybatis3开发环境搭建
    spring+struts2+mybatis
    【LeetCode】Populating Next Right Pointers in Each Node
    【LeetCode】Remove Duplicates from Sorted Array
    【LeetCode】Remove Duplicates from Sorted Array II
    【LeetCode】Binary Tree Inorder Traversal
    【LeetCode】Merge Two Sorted Lists
    【LeetCode】Reverse Integer
    【LeetCode】Same Tree
    【LeetCode】Maximum Depth of Binary Tree
  • 原文地址:https://www.cnblogs.com/Cc905/p/13454987.html
Copyright © 2011-2022 走看看