# 导入所需的库
import pymysql
# 连接配置
sql_con = pymysql.connect(
host='localhost', #主机地址,本地:localhost,远程:ip地址
user='root', #用户名
password='root', #密码(数据库密码)
db='test', #数据库名称
port=3307, #端口
autocommit=False, #是否开启自动提交,默认关闭
charset='utf8') #字符编码格式
# 插入数据到user表
def 普通插入():
cursor = sql_con.cursor() # 创建一个游标对象cursor
# SQL 插入语句
sql = """INSERT INTO user(name, sex, age)
VALUES ('张三', '男', 20)"""
try:
cursor.execute(sql) # 执行sql语句
sql_con.commit() # 提交到数据库执行,如果autocommit=True则不需要手动提交
except:
sql_con.rollback() # 如果发生错误则回滚
cursor.close() # 关闭不使用的游标对象
sql_con.close() # 关闭数据库连接
def 变量传值动态插入():
name = "李四"
sex = "男"
age = 19
# SQL 插入语句
# sql = """INSERT INTO user(name, sex, age)
# VALUES ('%s', '%s', %s)"""%(name,sex,age) #直接拼接
sql = "INSERT INTO user(name, sex, age) VALUES (%s, %s, %s)"
cursor = sql_con.cursor() # 创建一个游标对象cursor
try:
cursor.execute(sql, (name, sex, age)) # 执行sql语句,并传值拼接(直接拼接,就不需要传值)
sql_con.commit() # 提交到数据库执行,如果autocommit=True则不需要手动提交
except:
sql_con.rollback() # 如果发生错误则回滚
cursor.close() # 关闭不使用的游标对象
sql_con.close()
# 删除user表数据
def 删除user表数据():
cursor = sql_con.cursor() # 创建一个游标对象cursor
# 删除user表中,age字段大于19的数据
sql = "DELETE FROM user WHERE age > %s" % (19)
try:
cursor.execute(sql) # 执行sql语句
sql_con.commit() # 提交到数据库执行,如果autocommit=True则不需要手动提交
except:
sql_con.rollback() # 如果发生错误则回滚
cursor.close() # 关闭不使用的游标对象
sql_con.close() # 关闭数据库连接
# 修改user表数据
def 修改user表数据():
cursor = sql_con.cursor() # 创建一个游标对象cursor
# 更新user表中sex=男的age为108。
sql = "UPDATE user SET age = 108 WHERE sex = '%s'" % ('男')
try:
cursor.execute(sql) # 执行sql语句
sql_con.commit() # 提交到数据库执行,如果autocommit=True则不需要手动提交
except:
sql_con.rollback() # 如果发生错误则回滚
cursor.close() # 关闭不使用的游标对象
sql_con.close() # 关闭数据库连接
def 通过游标fetch系列方法查询数据():
cursor = sql_con.cursor() # 获取游标对象
sql = 'select * from user ' # 查询user表所有数据
r = cursor.execute(sql) # 通过游标对象,执行sql语句,返回值为受影响记录的行数
print("查询到%s条数据" % r)
#print("==========fetchone()获取一条数据==========")
#print(cursor.fetchone()) # 第一条数据
#print("=====再次执行fetchone()会获取第二条数据=====")
#print(cursor.fetchone()) # 第二条数据
#print("========fetchmany(4)获取多条数据==========")
#print(cursor.fetchmany(4)) # 指定获取4条, 此时游标已指到第三条数据,所以从第三条开始获取4条数据(游标可以理解为对获取位置的标记)
print("=========fetchall()获取全部数据===========")
print(cursor.fetchall())
#print("=======再次执行fetchall()获取全部数据=======")
# 再次执行,获取到的将是一个空元组,因为上边的fetchall已经取完了,游标到了最末端无数据。
print(cursor.fetchall()) # 当获取完毕,再查询数据返回为()
# 关闭游标
cursor.close()
# 关闭连接
sql_con.close()
if __name__ == '__main__':
# 增
#普通插入()
# 变量传值动态插入() #动态增加
# 删
# 删除user表数据()
# 改
# 修改user表数据()
# 查
通过游标fetch系列方法查询数据()
python操作数据库.py
于 2023-04-06 01:11:45 首次发布