关于用python编写数据库

  文章目录


前言

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

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


一、数据库搭建步骤

1.导包

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

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

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

代码如下:

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、增

当表存在时          INSERT INTO stu(name,age) VALUES(%s,%s)

在之前建立的 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 以没有报错为正确输出,并在 Mysql 中建立相应表单
  • 7
    点赞
  • 80
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值