# 导入pymysql
import pymysql
# 1.建立连接
# localhost = 127.0.0.1
conn = pymysql.connect(
# 主机地址
host='127.0.0.1',
# 端口号
port=3306,
# 用户名
user='root',
# 密码
password='123456',
# 使用的数据库
db='books',
# 注意:utf8 没有-
charset='utf8'
)
# 2.获取数据库连接游标
# 指定字典类型的游标 cursor=pymysql.cursors.DictCursor
cursor = conn.cursor()
# 3.执行sql语句
# PRIMARY KEY(主键约束) NOT NULL(非空约束) AUTO_INCREMENT(自动增长)
sql = "CREATE TABLE IF NOT EXISTS books(bid INTEGER PRIMARY KEY NOT NULL AUTO_INCREMENT, name CHAR(50), author CHAR(20), ntype CHAR(20))"
cursor.execute(sql)
# 4.插入数据
# for x in range(10):
# # 拼接sql语句
# # 可能会有sql注入的风险
# # 使用字符串拼接sql语句
# # sql = f"INSERT INTO books(name,author,ntype)VALUES('斗破苍穹第{x}部','天蚕土豆','玄幻奇幻')"
# # 执行sql语句
# # execute(sql,sql需要拼接的参数),可以防止sql注入
# cursor.execute("INSERT INTO books(name, author, ntype)VALUES(%s, %s, %s)", (f'斗破苍穹第{x}部', '天蚕土豆', '玄幻奇幻'))
# # 提交操作
# conn.commit()
# 5.查询数据
# 接收查询数据
# result是一个数字,表示sql语句执行了多少条数据
result = cursor.execute('SELECT * FROM books')
# 取出查询的结果
# fetchall()返回一个大元组,元组里面存放小元组,小元组就是查询到的数据
s = cursor.fetchall()
print(s)
# for bid, name, author, ntype in result:
# print(bid,name,author,ntype)
# fetchone()取出第一条数据,是一个元组
# result = cursor.fetchone()
# print(result)
# fetchmany()取出指定个数的数据
# s = cursor.fetchmany(3)
# print(s)
# 修改数据
cursor.execute('UPDATE books SET author=%s WHERE bid > %s',('唐家三少',10))
conn.commit()
# 删除
# 元组中若只有一条数据,一定要在最后加上一个逗号,表示后面没有数据了
cursor.execute('DELETE FROM books WHERE bid>%s',(10,))
conn.commit()
# 关闭游标
cursor.close()
# 关闭数据库连接
conn.close()