文章目录


前言

一、数据库搭建步骤

1.导包

2.创建连接

3、创建游标

4、执行sql语句

5、关闭游标

6、关闭连接

 数据库搭建总代码如下

二、数据库的增删改查操作

1、增

2、删

3、查

注意:



前言

由于上数据库课持续摆烂,我决心下课看回放总结,

在这里浅做了一些上数据库课的笔记和自己的理解:
 


一、数据库搭建步骤

1.导包

导包前必须下载好对应的包

我的方法:File-->Settings-->

Python 建立数据表 更新 python新建数据库_数据库

-->点击左下角加号 -->输入要下载的包

代码如下:

import  pymysql

2.创建连接

代码如下:

conn=pymysql.connect(host='localhost',user='root',password='8633',port=3306,db='st',charset='utf8')

使用pymysql包里的connect方法连接指定数据库

参数:

host:MySQL服务器地址

user:MySQL用户名

password:MySQL用户密码

port:端口号

db:你要连接的数据库

charset:字符集,与数据库一致

注意:这里不能写 “utf-8” ,会报错,写成 “utf8” !!!

具体报错为:'NoneType' object has no attribute 'encoding'

3、创建游标

cur=conn.cursor()

游标:系统为用户开设的数据缓冲区,类似于指针,可通过游标逐一获取记录并赋值给主变量,交由主语言进一步处理。

多数情况是需要使用游标的,不用游标的情况:

  • 查询结果为单记录的 SELECT 语句
  • 非 CURRENT 形式的增删改语句

4、执行sql语句

sql_w="CREATE TABLE stu(id INT AUTO_INCREMENT PRIMARY KEY NOT NULL," \
             "name VARCHAR(11) NOT NULL,age INT NOT NULL)"
    cur.execute(sql_w)

调用游标 cur 的方法 execute 执行 sql 语句 (创建一个表单)

sql 语句中

  • AUTO_INCREMENT 用于主键自动增长的(自增约束),这里 id 会自动赋值,如果第二行信息不写 id 则 id 默认为是 2.
  • PRIMARY KEY 主键

5、关闭游标

6、关闭连接

cur.close()
conn.close()

 数据库搭建总代码如下

import pymysql
def createtable_stu():
          conn=pymysql.connect(host='localhost',user='root',password='863096',port=3306,db='st',charset='utf8')
    cur=conn.cursor()
    sql_text="CREATE TABLE stu(id INT AUTO_INCREMENT PRIMARY KEY NOT NULL," \
             "name VARCHAR(11) NOT NULL,age INT NOT NULL)"
    cur.execute(sql_text)
    cur.close()
    conn.close()

if __name__=='__main__':
    createtable_stu()

 这里创建了一个函数,将所有建立数据库的内容放到函数内,

if __name__=='__main__': 主函数调用


二、数据库的增删改查操作

第1步,第2步,第3步与上述一致,第四步执行的 sql 语句略有不同

1、增

当表存在时

在之前建立的 stu 表中插入一条数据,该数据可以由用户手动输入

  • %s  可以取任意值
  • conn.commit() 用于提交用户手动输入的数据库
  • 由于可能出现用户输入错误,使用 try...except
  • 建立连接conn 的方法 rollback()回滚
  • 游标的 execute() 方法可以放两个参数,第一个参数为SQL语句,第二个参数为一个元组
  • 捕获异常保存在 e
def Insert_stu():
    conn=pymysql.connect(host='localhost',user='root',password='8630',port=3306,db='st',charset='utf8')
    cur=conn.cursor()
    sql_word="INSERT INTO stu(name,age) VALUES(%s,%s);"
    try:
        cur.execute(sql_word,('lihua',18))
        conn.commit()
    except Exception as e:
        print('插入失败')
        conn.rollback()
    finally:
        cur.close()
        conn.close()

调用:

if __name__=='__main__':
    # createtable_stu()
    Insert_stu()

2、删

删除 stu 表单里 id 为1的一行数据

sql_word="DELETE FROM stu WHERE id=1;"

3、查

  •  查询表单所有内容   sql_word="SELECT * FROM sc"
result=cur.fetchone() 游标指向缓冲区数据的值(单个)
result=cur.fetchall() 游标指向缓冲区数据的所有值(多个) 需要遍历
def qu_stu():
  conn=pymysql.connect(host='localhost',user='root',password='8630',port=3306,db='st',charset='utf8')
    cur=conn.cursor()
    sql_word="SELECT * FROM sc"
    try:
        cur.execute(sql_word)
        result=cur.fetchall()
        print("id\t\t  age name")
        for i in result:
            id = i[0]
            age = i[2]
            name = i[1]
            print(id,age,name)
        conn.commit()
    except Exception as e:
        print('查询失败')
        conn.rollback() 
    finally:
        cur.close()
        conn.close()

if __name__=='__main__':
    qu_stu()

查询结果如下:

Python 建立数据表 更新 python新建数据库_sql_02


 

注意:

  • 不可以重复建立相同的数据库和表单,也就是不能连续运行多次建立的代码
  • 由于没有输出,python 以没有报错为正确输出,并在 Mysql 中建立相应表单