python之mysql的增删改查

一、数据库基础

  • 表 table:数据是保存在表内,保存在一个表内的数据,应该具有相同的数据格式
  • 行:行用于记录数据
  • 记录:行内的数据
  • 列:列用于规定数据格式
  • 字段:数据的某个列
  • 主键:唯一地标识表中的某一条记录,不能空,不能重复

 

二、数据库的数据类型

1、数字类型

整数: tinyint、smallint、mediumint、int、bigint

浮点数: float、double、real、decimal

日期和时间: date、time、datetime、timestamp、year

2、字符串类型

字符串: char、varchar

文本: tinytext、text、mediumtext、longtext

3、二进制

(可用来存储图片、音乐等): tinyblob、blob、mediumblob、longblob

 

三、Python之MySQL数据库操作

1、连接myaql创建新的数据库

import pymysql
# 打开数据库连接(ip/端口/数据库用户名/登录密码/数据库名)
conn = pymysql.connect(host='localhost',port=3306,user='root',passwd='123456')
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = conn.cursor()
#  编写sql语句创建数据库   
sql1 = 'CREATE DATABASE test1 DEFAULT CHARACTER SET utf8'
# 执行sql语句
cursor.execute(sql1)
conn.close()

 

2、创建表

import pymysql
# 打开数据库连接(ip/端口/数据库用户名/登录密码/数据库名)
conn = pymysql.connect(host='localhost',port=3306,user='root',passwd='123456',db = 'test1')
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = conn.cursor()
#  编写sql语句创建表test_student_table   
sql2 = 'CREATE TABLE IF NOT EXISTS test_student_table (id VARCHAR(255) NOT NULL,name VARCHAR(255) NOT NULL,age VARCHAR(255) NOT NULL,PRIMARY KEY (id))'
# 执行sql语句
cursor.execute(sql2)
conn.close()

  

3、往表中插入数据

import pymysql

def get_conn():
    conn = pymysql.connect(host='localhost',port=3306,user='root',passwd='123456',db='test1')    # db:表示数据库名称
    return conn

def insert(sql):
    conn = get_conn()
    cur = conn.cursor()
    result = cur.execute(sql)
    print(result)
# commit方法才可以实现数据的插入,是真正将语句提交到数据库执行的方法。 conn.commit() cur.close() conn.close() if __name__ == '__main__': sql = 'INSERT INTO test_student_table VALUES(1,\'zhang\',12);'' insert(sql)

  

 

 

       sql占位符形式实现:

import pymysql

def get_conn():
    conn = pymysql.connect(host='localhost', port=3306, user='root', passwd='123456', db='test1')
    return conn

def insert(sql, args):
    conn = get_conn()
    cur = conn.cursor()
    result = cur.execute(sql, args)
    print(result)
    conn.commit()
    cur.close()
    conn.close()

if __name__ == '__main__':
    sql = 'INSERT INTO test_student_table VALUES(%s,%s,%s);'
    insert(sql, (2, 'wang', 13))

  

 

 

下面代码均以占位符的形式实现sql语句。

  • 插入多条语句实现:
import pymysql

def get_conn():
    conn = pymysql.connect(host='localhost', port=3306, user='root', passwd='123456', db='test1')
    return conn

def insert_many(sql, args):
    conn = get_conn()
    cur = conn.cursor()
    result = cur.executemany(query=sql, args=args)
    print(result)
    conn.commit()
    cur.close()
    conn.close()

if __name__ == '__main__':
    sql = 'insert into test_student_table VALUES (%s,%s,%s)'
    args = [(3, 'li', 11), (4, 'sun', 12), (5, 'zhao', 13)]
    insert_many(sql=sql, args=args)

  

 

 4、Python之更新操作

import pymysql

def get_conn():
    conn = pymysql.connect(host='localhost',port=3306,user='root',passwd='root',db='test1')    # db:表示数据库名称
    return conn

def update(sql,args):
    conn = get_conn()
    cur = conn.cursor()
    result = cur.execute(sql,args)
    print(result)
    conn.commit()
    cur.close()
    conn.close()

if __name__ == '__main__':
    sql = 'UPDATE test_student_table SET NAME=%s WHERE id = %s;'
    args = ('zhangsan', 1)
    update(sql, args)

  

 

5、Python之删除操作

import pymysql

def get_conn():
    conn = pymysql.connect(host='localhost',port=3306,user='root',passwd='root',db='test1')    # db:表示数据库名称
    return conn

def delete(sql,args):
    conn = get_conn()
    cur = conn.cursor()
    result = cur.execute(sql,args)
    print(result)
    conn.commit()
    cur.close()
    conn.close()

if __name__ == '__main__':
    sql = 'DELETE FROM test_student_table WHERE id = %s;'
    args = (1,) # 单个元素的tuple写法
    delete(sql,args)

  

 

6、Python之查询操作

import pymysql

def get_conn():
    conn = pymysql.connect(host='localhost', port=3306, user='root', passwd='root', db='test1')
    return conn

def query(sql,args):
    conn = get_conn()
    cur = conn.cursor()
    cur.execute(sql,args)
    results = cur.fetchall()
    print(type(results))  # 返回<class 'tuple'> tuple元组类型

    for row in results:
        print(row)
        id = row[0]
        name = row[1]
        age = row[2]
        print('id: ' + str(id) + '  name: ' + name + '  age: ' + str(age))
        pass

    conn.commit()
    cur.close()
    conn.close()

if __name__ == '__main__':
    sql = 'SELECT  * FROM test_student_table;'
    query(sql,None)

  输出:

<class 'tuple'>
(2, 'wang', 13)
id: 2  name: wang  age: 13
(3, 'li', 11)
id: 3  name: li  age: 11
(4, 'sun', 12)
id: 4  name: sun  age: 12
(5, 'zhao', 13)
id: 5  name: zhao  age: 13

  

 

四、总结

1、创建数据库

create database 数据库名 charset=utf8;

2、删除数据库

drop database 数据库名;

3、切换数据库

use 数据库名;

4、查看当前选择的数据库

select database();

5、查看目前所有的数据库

show databases;

五、表操作

1、查看当前数据库中所有表

show tables;

2、创建表

create table 表名(列及类型);
  • 列名:id
  • 类型:int unsigned
  • 约束1:not null
  • 约束2:primary key
  • 约束3:auto_increment

列的格式:列的名称 类型 约束

例如:

create table hero(h_id int auto_increment primary key,h_name varchar(10) not null);

3、修改表

语法:

alter table 表名 add(添加)|modify(修改)|drop(删除) 列名 类型;

添加列:h_skill 为字符类型

alter table hero add h_skill varchar(10);

修改列:h_skill修改本属性不能为空

alter table hero modify h_skill varchar(10) not null;

4、删除表

drop table 表名;

5、查看表结构

desc 表名;

6、更改表名称

rename table 原表名 to 新表名;

7、查看边的创建语句

show create table 表名

六、数据操作

1、增加数据

insert into 表名(列1,...) values(值1,...);

例如:

insert into hero(h_id,h_name,h_skill) values(1,'韩信','裂天爆斩');

主键列是自动增长,但是在全列插入时需要占位,通常使用0,插入成功后以实际数据为准

2、简单查询数据

select * from 表名

3、修改数据

update 表名 set 列1=值1,... where 条件

4、删除数据

delete from 表名 where 条件

 


 

posted @ 2020-02-24 15:04  季末并不寂寞  阅读(272)  评论(0)    收藏  举报