python.pymysql基础

讲一下pymysql的具体使用,在此之前默认大家会写sql语句。

下面是一些简单概念:

数据库管理系统

  • DBMS 是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库。它是用户(或应用程序)与数据库之间的接口。
  • 常见的DBMSMySQL, Oracle, PostgreSQL, SQL Server, SQLite,Redis, MongoDB, Hbase, Neo4j 等。

DDL: 数据定义语言:简称DDL(Data Definition Language) 作用: 用来定义数据库对象:数据库,表,列/字段等。 关键字: create,drop,alter等 DML: 数据操作语言:简称DML(Data Manipulation Language) 作用:用来对数据库中表的记录进行更新。 关键字: insert,delete,update等 DQL: 数据查询语言:简称DQL(Data Query Language) 作用:用来查询数据库中表的记录。 关键字: select,from,where等 DCL: 数据控制语言:简称DCL(Data Control Language) 用来定义数据库的访问权限和安全级别,及创建用户。

数据库分类:关系型数据库(SQL)和非关系型数据库(NoSQL)

可以粗略理解为:前者以表为主(包含字段,字段值),表内和表间有约束关系;

后者以键值对、文档、列族为主,没有固定结构

操作部分:

在pycharm中对MySQL进行操作前,我们需要先连接数据库:

需要安装库:

pip install pymysql

具体操作(需要保证pycharm已经连上数据库):

pymysql.connect()创建数据库连接

connect.cursor() 数据库连接中的方法 获取游标 用于后续的数据库操作(后面的游标用cur代称)

cur.execute(sql_op) #执行sql,其中sql_op是需要操作的SQL语句,操作完成后,需要进行.commit()提交才能完成对数据库中数据的修改,为保证数据安全,同样支持.rollback()操作

注意:在crud中,针对select查询操作是不需要提交的,可以直接从cur中获取结果

关于输入参数查询:为解决sql注入,将查询语句和参数分离,不使用fstring,使用%s占位符;在pymysql中所有的占位符都使用%s(会自动识别数据类型),这一点于python基础语法区分

import pymysql

# 创建连接
connection = pymysql.connect(
    host='localhost',
    port=3306,
    user='',#此处填写用户名 与创建数据库连接时一致
    password='',#此处填写密码 与创建数据库连接时一致
    database='',#选择要操作的数据库
    charset='utf8',
    autocommit=False
)

#检查是否连接成功
if connection:
    print('success')
    print(connection)
else:
    print('error')

# 创建/获取游标
curs = connection.cursor()
# 通过游标进行操作
row = curs.execute('select *from itheima.test_table')  # 此处execute返回的是该操作影响了多少行的数据
print(row)
print()
result = curs.fetchone()  # 真正的获取结果
print(result)
results = curs.fetchall()  # 本质是在控制cur指针,指针扫描过的数据不会再回头去看,该步骤的输出会缺少第一个查询的数据
print(results)

curs.execute('select *from itheima.test_table')
print(curs.fetchmany(10))  # 指定行数输出,超出范围则输出全部查询结果

curs.execute('select *from itheima.test_table')
for item in curs:
    # 可遍历 以tuple元组形式输出
    print(item)

# crud操作
# row = curs.execute('insert into itheima.test_table(name,weight) value("taki",49);')
# connection.commit()
# 保证系列操作一同完成/取消
# try:
#     curs.execute('update itheima.test_table set weight=weight-10 where name="taki";')
#     curs.execute('update itheima.test_table set weight=weight-10 where name="aki";')
# except Exception as e:
#     connection.rollback()#回滚 清空内存
#     print(f'error{e}')
# else:
#     connection.commit()#提交

try:
    sql_op = """
            create table if not exists new_table(
                id int primary key AUTO_INCREMENT,
                name varchar(20),
                weight int
            );
            """
    curs.execute(sql_op)
except Exception as e:
    connection.rollback()  # 回滚 执行undolog 清空缓冲区
    print(f'error{e}')
else:
    connection.commit()  # 提交


name = input('姓名:')
weight = int(input('体重:'))
#外层使用单引号的话内层需要用双引号;外层双引号的话则相反
sql_op = f'select * from test_table where name="{name}" and weight={weight};'
row = curs.execute(sql_op)
if row:
    print(row,'success')

#解决sql注入,将查询语句和参数分离 不使用fstring,使用%s占位符 在pymysql中所有的占位符都使用%s(会自动识别数据类型),这一点于python基础语法区分
sql_op = 'select * from test_table where name=%s and weight=%s;'
cs = (name,weight)
row = curs.execute(sql_op,cs)
if row:
    print(row,'success')

# 关闭游标
curs.close()
# 关闭连接
connection.close()

pymysql操作流程总结:

1.导入pymysql

2.使用pymysql.connect()创建数据库连接

3.获取cursor游标

4.通过cursor执行SQL语句

5.关闭cursor

6.关闭数据库连接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值