文章目录
前言
一、数据库搭建步骤
1.导包
2.创建连接
3、创建游标
4、执行sql语句
5、关闭游标
6、关闭连接
数据库搭建总代码如下
二、数据库的增删改查操作
1、增
2、删
3、查
注意:
由于上数据库课持续摆烂,我决心下课看回放总结,
在这里浅做了一些上数据库课的笔记和自己的理解:
导包前必须下载好对应的包
我的方法:File-->Settings-->
-->点击左下角加号 -->输入要下载的包
代码如下:
import pymysql
代码如下:
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'
cur=conn.cursor()
游标:系统为用户开设的数据缓冲区,类似于指针,可通过游标逐一获取记录并赋值给主变量,交由主语言进一步处理。
多数情况是需要使用游标的,不用游标的情况:
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 语句中
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 语句略有不同
当表存在时 INSERT INTO stu(name,age) VALUES(%s,%s)
在之前建立的 stu 表中插入一条数据,该数据可以由用户手动输入
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()
删除 stu 表单里 id 为1的一行数据
sql_word="DELETE FROM stu WHERE id=1;"
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()
查询结果如下: