import pymysql # 连接mysql数据库的模块
# 1.连接数据库
"""
需要传入的参数:
host=None,
user=None,
password="",
database=None,
port=0,
charset='',
autocommit=True
"""
client = pymysql.connect(
host="127.0.0.1",
port=3306,
user="root",
password="123",
database="test",
charset='utf8', # 一定不要写utf-8
# 针对增删改操作,执行重要程度高,若要执行,必须要有一步确认的操作,autocommit=True默认对数据库进行增删改操作时自动提交至数据库;若此处不写,在下面代码 cursor_obj.execute(sql) 后面手动需要添加 client.commit()操作
autocommit=True
)
# print(client) # 打印结果:<pymysql.connections.Connection object at 0x00000000028A8B88>
# 2.获取游标对象。游标:可以用来提交sql命令
# pymysql.cursors.DictCursor:将查询出来的结果制作成字典的形式返回
cursor_obj = client.cursor(pymysql.cursors.DictCursor)
# 3.通过execute可以提交sql语句(增删改查都可以,可以使用try来捕获异常)
try:
# 1.1)查数据
sql = "select * from books" # 不用写分号
# 1.2)插入数据
# sql = "insert into student(id, name, sex, birthday, class) values('110', '张芳', '男', '1946', '95030')" # 不用写分号
# 2)提交sql语句
res = cursor_obj.execute(sql)
# print(res) # execute返回的是当前sql语句所影响的行数
# client.commit() # 上面连接数据库的代码处已写了autocommit=True,此处注释掉
# 3.1)提交后,通过cursor_obj对象.fetchall() 获取所有查询到的结果
data = cursor_obj.fetchall()
for i in data:
print(i)
# 3.2).fetchone() 只获取查询结果中的一条
# print(cursor_obj.fetchone())
# 3.3).fetchmany() 可以指定获取几条数据
# print(cursor_obj.fetchmany(4)) # 获取四条数据
except Exception as e:
print(e)
# 关闭游标
cursor_obj.close()
# 关闭客户端连接
client.close()
评论