首页 > 数据库 >Python学习八:数据库编程接口

Python学习八:数据库编程接口

时间:2022-10-31 13:03:32浏览次数:37  
标签:Python 数据库 编程 游标 cursor sql self select


文章目录

  • ​​一、数据库编程接口​​
  • ​​1.1 连接对象​​
  • ​​1.1.1 获取连接对象​​
  • ​​1.1.2 连接对象的方法​​
  • ​​2.1 游标对象​​

一、数据库编程接口

1.1 连接对象

1.1.1 获取连接对象

数据库连接对象主要提供获取数据库游标对象和提交、回滚事物的方法,以及关闭数据库连接

​使用connet()函数连接对象​​ 参数

  1. dsn:数据源名称,给出该参数标识数据库依赖
  2. user: 用户名
  3. password:用户密码
  4. host:主机名
  5. database:数据库名称
  6. charset:编码
  7. cursorclass:驱动
  8. port:端口号
import pymysql
if __name__ == '__main__':
conn=pymysql.connect(host='127.0.0.1',
port=3306,
user='root',
password='root',
db='kc',
charset='utf8',
cursorclass=pymysql.cursors.DictCursor
)

1.1.2 连接对象的方法

  1. close():关闭数据库连接
  2. commit():提交事务
  3. rollback():回滚事务
  4. cursor():获取游标对象,操作数据库,执行DML操作、调用存储过程等

2.1 游标对象

游标对象代表数据库中的游标,用于指示抓取数据库操作上下文。主要提供执行sql语句,调用存储过程、获取查询结果等方法。

​使用coursor()函数连接对象​

游标对象属性

  1. description :数据库列类型和值得描述对象
  2. rowcount:放回结果的行数信息统计

游标对象的方法

  1. callproc(procname,[,parameters]) 调用存储过程,需要数据库支持
  2. close()关闭当前游标
  3. 0excute(operation [,parameters]) 执行数据库操作,SQL语句或者数据库命令
  4. excutemany(operation,seq_of_params) 用于批量操作,如批量更新
  5. fetchone() 获取查询结果集的下一条信息
  6. fetchmany(size) 获取指定数量的记录
  7. nextset() 跳至下一个可用的结果集
  8. arraysize 使用指定fetchmany()获取行数,默认为1
  9. setinputsizes(sizes) 设置在调佣execute*()方法时分配的内存区域大小
  10. setoutputsizes(sizes)

​​参考地址​

Python学习八:数据库编程接口_mysql

'''
封装一个mysql工具类(需要自己写SQL语句)
功能:mysql数据库操作
步骤:
1.连接数据库
2.通过连接对象,获取游标对象
3.增删改查操作
方法:
1.查
2.增删改 commit,rollback
'''

# 先要导入pymysql
import pymysql

# 把连接参数定义成字典
config = {
"host": "127.0.0.1",
"port": 3307,
"database": "lebo",
"charset": "utf8",
"user": "root",
"passwd": "root"
}


class Mysqldb():
# 初始化方法
def __init__(self):
# 初始化方法中调用连接数据库的方法
self.conn = self.get_conn()
# 调用获取游标的方法
self.cursor = self.get_cursor()

# 连接数据库的方法
def get_conn(self):
# **config代表不定长参数
conn = pymysql.connect(**config)
return conn

# 获取游标
def get_cursor(self):
cursor = self.conn.cursor()
return cursor

# 查询sql语句返回的所有数据
def select_all(self, sql):
self.cursor.execute(sql)
return self.cursor.fetchall()

# 查询sql语句返回的一条数据
def select_one(self, sql):
self.cursor.execute(sql)
return self.cursor.fetchone()

# 查询sql语句返回的几条数据
def select_many(self, sql, num):
self.cursor.execute(sql)
return self.cursor.fetchmany(num)

# 增删改除了SQL语句不一样其他都是一样的,都需要提交
def commit_data(self, sql):
try:
# 执行语句
self.cursor.execute(sql)
# 提交
self.conn.commit()
print("提交成功")
except Exception as e:
print("提交出错\n:", e)
# 如果出错要回滚
self.conn.rollback()

# 当对象被销毁时,游标要关闭,连接也要关闭
# 创建时是先创建连接后创建游标,关闭时是先关闭游标后关闭连接
def __del__(self):
self.cursor.close()
self.conn.close()
# 已经封装好mysql类了,就不用导入pymsql了,直接导入封装好的类

from mysql_util import Mysqldb

# 实例化
my_db = Mysqldb()

# 写查询SQL语句
sql = "select * from user where id>5"
# 查询所有
select_all = my_db.select_all(sql)
print("查询所有数据:\n", select_all)
# 查询一条
select_one = my_db.select_one(sql)
print("查询一条数据:\n", select_one)
# 查询多条
select_many = my_db.select_many(sql, 3)
print("查询3条数据:\n", select_many)

# 新增一条数据
value = (16, 'BBQ')
sql = f"insert into user values {value}"
insert_one = my_db.commit_data(sql)
# 新增多条数据
values = "(17, 'aaa'), (18, 'bbb'), (19, 'ccc')"
sql = f"insert into user values {values}"
insert_many = my_db.commit_data(sql)

# 修改数据
sql = "update user set name = '出不去了' where id = 17"
my_db.commit_data(sql)

# 删除数据
sql = "delete from user where id = 17"
my_db.commit_data(sql)


标签:Python,数据库,编程,游标,cursor,sql,self,select
From: https://blog.51cto.com/u_15854304/5809198

相关文章

  • Python学习七:异常处理及调试程序
    文章目录​​一、异常概述​​​​二、异常处理语句​​​​2.1try...except​​​​2.2try...except...else​​​​2.3try...except...finally​​​​2.4......
  • Python学习六:模块
    文章目录​​一、概述​​​​二、自定义模块​​​​2.1创建模块​​​​2.2使用import语句导入模块​​​​2.3使用from...import语句导入模块​​​​2.4模块搜......
  • Python学习五:面向对象设计程序
    文章目录​​一、引言​​​​二、对象​​​​定义​​​​三、类​​​​定义​​​​四、面向对象程序的设计特点​​​​三大基本特点:封装、继承、多态​​​​1.封装​......
  • idea技巧之sql反向定位数据库表,以及智能提示
    文章目录​​一、首先没有提示之前,背景是这个颜色,且写sql没有提示​​​​二、首先需要设置数据库,我这里是mysql​​​​第二步:连接数据库​​​​正常使用背景变为绿色......
  • Python学习四:函数
    文章目录​​一、函数的创建和调用​​​​1创建一个函数​​​​1.1语法​​​​1.2调用函数​​​​二、参数传递​​​​2.1了解形式参数和实际参数​​​​2.2位置......
  • Python爬虫学习五:常用-xpath
    文章目录​​一、xpath解析原理​​​​二、环境的安装​​​​三、如何实例化一个etree对象​​​​第一步:引入对象​​​​第二步:加载对象​​​​方法一:将本地的html文档......
  • 关于python中的深浅拷贝copy与deepcopy
    浅拷贝(藕断丝连):copy.copy()或者=深拷贝(一刀两断):copy.deepcopy()首先我们需要了解在python中"id()"这个函数可以用来查看变量的的内存地址。然后需要明确深浅拷贝只是......
  • 数据库的常用术语
    数据模型:(Datamodel)三个要素:数据结构,数据操作,数据约束条件。数据结构(表里面的字段):对象类型的集合,是对静态属性的描述。数据操作(表里面的数据): 是对数据库中的各种对......
  • 数据库设计遵循的原则
    范式概述:范式就是符合某一规范级别的关系模式的集合。数据库共有7种范式: 从低到高分别是: 1NF,2NF,3NF,BCNF,4NF,5NF,6NF注意:1)实际开发中,我们一般使用前三种......
  • python颜色代码大全,颜色列表|颜色字典
    颜色字典如下,想要将颜色保存为列表调用可以使用字典的value和key下面两种代码都能获取所有颜色的列表list_keys=[iforiincnames.keys()]list_values=[ifori......