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