Day3-利用python运用MYSQL
练习:
1、insert操作(插入)
example01 - 接入MySQL数据库,实现insert操作
pip install pymysql cryptography
create user 'guest'@'%' identified by '123456';
grant insert, delete, update, select on hrs.* to 'guest'@'%';
SQL Inject ---> SQL注入攻击
import pymysql
dept_no = int(input('部门编号: '))
dept_name = input('部门名称: ')
dept_location = input('所在地: ')
# 1. 建立连接 ---> Connection
conn = pymysql.connect(host='*****', port=****,
user='****', password='*****',
database='*****', charset='*****')
try:
# 2. 通过连接对象获取游标对象 ---> Cursor
with conn.cursor() as cursor:
# 3. 通过游标对象向数据库发出SQL语句获得执行结果
affected_rows = cursor.execute(
'insert into tb_dept (dno, dname, dloc) values (%s, %s, %s)',
(dept_no, dept_name, dept_location)
)
if affected_rows == 1:
print('新增部门成功')
# 4. 如果操作成功,手动提交
conn.commit()
except pymysql.MySQLError as err:
print(err)
# 4. 如果操作失败,手动回滚
conn.rollback()
finally:
# 5. 关闭连接,释放资源
conn.close()
2、delete操作(删除)
import pymysql
dept_no = int(input('部门编号: '))
# 1. 建立连接 ---> Connection
conn = pymysql.connect(host='*****', port=****,
user='****', password='*****',
database='*****', charset='*****')
try:
# 2. 通过连接对象获取游标对象 ---> Cursor
with conn.cursor() as cursor:
# 3. 通过游标对象向数据库发出SQL语句获得执行结果
affected_rows = cursor.execute(
'delete from tb_dept where dno = %s',
(dept_no, )
)
if affected_rows == 1:
print('删除部门成功')
# 4. 如果操作成功,手动提交
conn.commit()
except pymysql.MySQLError as err:
print(err)
# 4. 如果操作失败,手动回滚
conn.rollback()
finally:
# 5. 关闭连接,释放资源
conn.close()
3、update操作(修改)
import pymysql
dept_no = int(input('部门编号: '))
dept_name = input('部门名称: ')
dept_location = input('所在地: ')
# 1. 建立连接 ---> Connection
conn = pymysql.connect(host='*****', port=****,
user='****', password='*****',
database='*****', charset='*****')
try:
# 2. 通过连接对象获取游标对象 ---> Cursor
with conn.cursor() as cursor:
# 3. 通过游标对象向数据库发出SQL语句获得执行结果
affected_rows = cursor.execute(
'update tb_dept set dname = %s, dloc = %s where dno = %s',
(dept_name, dept_location, dept_no)
)
if affected_rows == 1:
print('修改部门信息成功')
# 4. 如果操作成功,手动提交
conn.commit()
except pymysql.MySQLError as err:
print(err)
# 4. 如果操作失败,手动回滚
conn.rollback()
finally:
# 5. 关闭连接,释放资源
conn.close()
4、select操作(查询)
表 ---> table ---> entity / relation ---> 关系
行 ---> row ---> record / tuple ---> 记录 / 元组
列 ---> column ---> field / attribute ---> 字段 / 属性
行的数量 ---> cardinality ---> 集合的势
列的数量 ---> degree ---> 度
import pymysql
from pymysql.cursors import Cursor
# 1. 建立连接 ---> Connection
conn = pymysql.connect(host='*****', port=****,
user='****', password='*****',
database='*****', charset='*****')
try:
# 2. 通过连接对象获取游标对象 ---> Cursor
with conn.cursor() as cursor: # type: Cursor
# 3. 通过游标对象向数据库发出SQL语句获得执行结果
cursor.execute(
'select dno, dname, dloc from tb_dept'
)
# 4. 通过游标对象抓取数据
# fetchone / fetchall / fetchmany
while row := cursor.fetchone():
print(row)
except pymysql.MySQLError as err:
print(err)
finally:
# 5. 关闭连接,释放资源
conn.close()