1. 程式人生 > 實用技巧 >python每日一練之mysql.connector

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,關於資料庫的語句和複雜的查詢、資料型別,後面在溫習時會再另寫一篇文章。