python操作数据库.py

# 导入所需的库
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系列方法查询数据()

猜你喜欢

转载自blog.csdn.net/qq_35622606/article/details/129980652