文章目录
前言
一、数据库搭建步骤
1.导包
2.创建连接
3、创建游标
4、执行sql语句
5、关闭游标
6、关闭连接
数据库搭建总代码如下
二、数据库的增删改查操作
1、增
2、删
3、查
注意:
前言
由于上数据库课持续摆烂,我决心下课看回放总结,
在这里浅做了一些上数据库课的笔记和自己的理解:
一、数据库搭建步骤
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、增
当表存在时
在之前建立的 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 中建立相应表单