13. python从入门到精通——Python操作数据库

这篇具有很好参考价值的文章主要介绍了13. python从入门到精通——Python操作数据库。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

数据库编程接口:python database API

python database API概述

python database API 规范对于关系数据库的访问,Python社区已经制定出一个标准,称为Python Database API,通过这个接口使python跨不同数据库的操作代码可以更加具有可移植性、让 Python 可以连接(并操作)更多的数据库。

python database API 中有两个主要对象:

  • 用于管理数据库连接的Connection(连接)对象
  • 用于执行查询的Cursor(游标)对象

连接对象  

connect() 函数

    该函数创建并返回一个 Connection 对象,connect()函数通过 Connection 对象访问数据库

    该函数有多个参数,具体使用哪个参数取决于使用的数据库类型。如要访问Oracle和MySQL数据库则必须同时下载这俩python模块。这些模块在获取连接对象时都需要connect()函数。

Connect()函数属性:

    user                     用户名
    password               密码
    host                     主机名
    database               数据库名  MySQLdb数据库使用的是db
    dsn                      数据源名,指定要连接的数据库类型如:mysql、oracle
 

Connection连接对象

    主要用于提供数据库游标对象和提交回滚事务的方法以及关闭数据库连接     

    Connection连接对象常用方法:

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

游标对象

    cursor():通过Connection对象的cursor()方法生成游标对象

    cursor对象的常用方法如下图:

13. python从入门到精通——Python操作数据库

     执行顺序:

        创建数据库连接对象→创建游标对象→执行SQL语句处理数据结果→关闭游标→关闭连接对象

使用sqlite3模块操作SQLite数据库

SQLite:嵌入式数据库,他的数据库就是一个文件,所以使用方便操作简单

sqlite3:python中内置的SQLite模块为

创建数据库文件

示例:会在当前目录创建一个数据库文件

import sqlite3
# 连接到SQLite数据库
# 数据库文件是mrsoft.db
# 如果文件不存在,会自动在当前目录创建:
conn = sqlite3.connect('mrsoft.db') #mrsoft.db表示定义的数据库名称
# 创建一个Cursor:
cursor = conn.cursor()
# 执行一条SQL语句,创建user表:                    
cursor.execute('create table user (id int(10)  primary key, name varchar(20))')
# 关闭游标
cursor.close()
# 提交事务:
conn.commit()
# 关闭Connection:
conn.close()

操作SQLite数据库

注意:因为引号是成对出现的,所以在写sql语句是要不外面是单引号里面是双引号要不反过来

安装图形化工具Navicat for salite 安装后进行查看测试

新增

  • 新增数据

示例:

import sqlite3
conn = sqlite3.connect('mrsift.db')
cursor = conn.cursor()
cursor.execute('insert into user (id,name) values(1,"小明")')
cursor.execute('insert into user (id, name) values ("2", "Andy")')
cursor.close()
conn.commit()
conn.close()
  • 为避免sql注入从而泄露信息可以用占位符编写sql语句

示例:

import sqlite3
conn = sqlite3.connect('mrsift.db')
cursor = conn.cursor()
sql = 'insert into user (id,name) values(?,?)' #?占位符进行预处理
cursor.execute(sql,(2,'lisi')) #用真实的值替换占位符,一一对应的关系
cursor.close()
conn.commit()
conn.close()
  • 通过 cursor.executemany 方法批量插入数据

示例:

import sqlite3
conn = sqlite3.connect('mrsift.db')
cursor = conn.cursor()
sql = 'insert into user (id,name) values(?,?)' #?占位符进行预处理
data = [(3,'wang3'),(4,'wang4'),(5,'wang5')] #定义列表
cursor.executemany(sql,data) #批量插入
cursor.close()
conn.commit()
conn.close()

查询

    注意:查询是不需要提交事务

  • fetchone():获取集群结果集中的下一条记录,返回一个元组
import sqlite3
conn = sqlite3.connect('mrsift.db')
cursor = conn.cursor()
cursor.execute('select * from user') 
print(cursor.fetchone()) #获取第一条记录
print(cursor.fetchone()) #获取第二条记录
print(cursor.fetchone()) #获取第三条记录
cursor.close()
conn.close()
  • fetchmany(size):获取指定数量的记录,返回一个列表

        #size:指定获取结果集中几条记录,默认为一条

import sqlite3
conn = sqlite3.connect('mrsift.db')
cursor = conn.cursor()
cursor.execute('select * from user') #
print(cursor.fetchmany(2)) #指定获取结果集中的两条记录
cursor.close()
conn.close()
  • fetchall:获取结构集中的所有记录,返回一个列表
import sqlite3
conn = sqlite3.connect('mrsift.db')
cursor = conn.cursor()
cursor.execute('select * from user where id > 3') 
print(cursor.fetchall()) 
cursor.close()
conn.close()

修改

import sqlite3
conn = sqlite3.connect('mrsift.db')
cursor = conn.cursor()
sql = 'update user set name = ? where id = ?'
cursor.execute(sql,('wang1',1)) 
cursor.close()
conn.commit()
conn.close()

删除

import sqlite3
conn = sqlite3.connect('mrsift.db')
cursor = conn.cursor()
sql = 'delete from user where id = ?'
cursor.execute(sql,[1]) 
cursor.close()
conn.commit()
conn.close()

使用MySQL数据库

下载安装MySQL

安装PyMySQL

第三方模块PyMySQL:因为在python中并没有内置操作mysql的模块,所以我们需要安装第三方mysql操作模块,支持的模块有很多PyMySQL是其中之一

命令行执行安装:pip3 install PyMySQL

连接数据库

示例

import pymysql
# 打开数据库连接,参数1:主机名或IP;参数2:用户名;参数3:密码;参数4:数据库名称
db = pymysql.connect(host="localhost", user="root", password="123456", database="mrsoft")
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()
# 使用 execute()  方法执行 SQL 查询
cursor.execute("SELECT VERSION()")
# 使用 fetchone() 方法获取单条数据.
data = cursor.fetchone()
print ("Database version : %s " % data)
cursor.close()
# 关闭数据库连接
db.close()

创建数据表

示例

import pymysql

# 打开数据库连接
db = pymysql.connect(host="localhost", user="root", password="123456", database="mrsoft")
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()
# 使用 execute() 方法执行 SQL,如果表存在则删除
cursor.execute("DROP TABLE IF EXISTS books")
# 使用预处理语句创建表
sql = """
CREATE TABLE books (
  id int(8) NOT NULL AUTO_INCREMENT,
  name varchar(50) NOT NULL,
  category varchar(50) NOT NULL,
  price decimal(10,2) DEFAULT NULL,
  publish_time date DEFAULT NULL,
  PRIMARY KEY (id)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
"""
# 执行SQL语句
cursor.execute(sql)
cursor.close()
# 关闭数据库连接
db.close()

操作数据表

删改查可以参考sqlite3,操作语句基本相同

示例:增加数据,一次插入多条

注意:sqlite的占位符为'?',而mysql中的占位符为‘%s’文章来源地址https://www.toymoban.com/news/detail-499626.html

import pymysql

# 打开数据库连接
db = pymysql.connect(host="localhost", user="root", password="Picc@1234", database="mrsoft") #如果有汉字需要指定字符编码否则报错
# 使用cursor()方法获取操作游标
cursor = db.cursor()
# 数据列表
data = [("零基础学Python",'Python','79.80','2018-5-20'),
        ("Python从入门到精通",'Python','79.80','2018-10-1'),
        ("Python数据分析从入门到实践",'Python','98.00','2020-6-1'),
        ("Java从入门到精通(第5版)",'Java','69.80','2019-2-1'),
        ("零基础学Java",'Java','69.80','2017-5-18'),
        ]
try:
    # 执行sql语句,插入多条数据
    cursor.executemany("insert into books(name, category, price, publish_time) values (%s,%s,%s,%s)", data)
    # 提交数据
    db.commit()
except:
    # 发生错误时回滚
    db.rollback()
cursor.close()
# 关闭数据库连接
db.close()

到了这里,关于13. python从入门到精通——Python操作数据库的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 13.Python从入门到精通—Python 集合操作与方法概览

    在Python中,集合是一种无序、不重复的数据类型。集合通常用于去重、检查成员资格等操作。Python提供了内置的set类型来实现集合,可以使用花括号{}或set()函数来创建一个集合。 使用花括号创建集合: 使用set()函数创建集合: 可以使用add()方法向集合中添加元素: 可以使用

    2024年03月19日
    浏览(34)
  • TiDB数据库从入门到精通系列之四:SQL 基本操作

    成功部署 TiDB 集群之后,便可以在 TiDB 中执行 SQL 语句了。因为 TiDB 兼容 MySQL,你可以使用 MySQL 客户端连接 TiDB,并且大多数情况下可以直接执行 MySQL 语句。 SQL 是一门声明性语言,它是数据库用户与数据库交互的方式。它更像是一种自然语言,好像在用英语与数据库进行对

    2024年02月12日
    浏览(51)
  • 大白话说Python+Flask入门(六)Flask SQLAlchemy操作mysql数据库

    这篇文章被搁置真的太久了,不知不觉拖到了周三了,当然,也算跟falsk系列说再见的时候,真没什么好神秘的,就是个数据库操作,就大家都知道的 CRUD 吧。 1、Flask SQLAlchemy简介 Flask SQLAlchemy 是基于 Flask web 框架和 SQLAlchemy ORM (对象关系映射)的工具。它旨在为 Flask web 应用

    2024年02月05日
    浏览(58)
  • Python——数据库操作

    目录 (1)安装Flask-SQLAlchemy (2)使用Flask-SQLAlchemy操作数据库 (3)连接数据库  •创建数据表 •增加数据 •查询数据  •更新数据 •删除数据 Flask-SQLAlchemy是Flask中用于操作关系型数据库的扩展包 ,该扩展包内部集成了SQLAlchemy,并简化了在Flask程序中使用SQLAlchemy操作数据

    2024年02月04日
    浏览(47)
  • python操作数据库

    首先安装数据插件 数据库的插入

    2024年02月13日
    浏览(41)
  • Python --数据库操作

    目录 1, mysql 1-1, mysql驱动 1-2, 连接mysql 1-3, 执行sql语句 1-4, 数据表操作 1-4-1, 创建数据表 1-4-2, 查询数据表 1-4-3, 修改数据表 1-4-4, 删除数据表 1-5, 修改数据表内容 1-5-1, 插入数据 1-5-2, 查询数据 1-5-3, 获取结果集 1-5-4, 更新数据 1-5-5, 删除数据 1-6, 断开mys

    2024年02月11日
    浏览(36)
  • Python之数据库操作(连接数据库,增删改查操作,易错点理解)

    文章目录 前言 一、Python之数据库操作 二、 pymysql 安装 三、pymysql 包引入  连接数据库 创建游标 执行sql数据 - 增删改查 要获取查询结果数据 关闭游标,关闭数据库连接 总结 记录:Python操作数据库的步骤,不容易理解的地方。 学习地址: python与各大数据库的连接: http:/

    2023年04月16日
    浏览(45)
  • Python操作PostgreSQL数据库

    个人简介 :一个从会计转行数据分析师的三旬老汉 擅长领域 :数据分析、数据仓库、大数据 博客内容 :平时会将自己工作中遇到的问题进行归纳总结,分享给各位小伙伴,意在帮助大家 少加班 、 不掉发 ,让我们相互学习,一起进步。 本文分享使用Python操作PostgreSQL数据

    2024年02月15日
    浏览(38)
  • Python基础之数据库操作

    一、安装第三方库PyMySQL 1、在PyCharm中通过 【File】-【setting】-【Python Interpreter】搜索 PyMySQL进行安装 2、通过PyCharm中的 Terminal 命令行 输入: pip install PyMySQL 注:通过pip安装,可能会提示需要更新pip,这时可执行:pip install --upgrade pip 进行更新pip 二、mysql数据库查询(SELECT) 1、

    2024年01月24日
    浏览(42)
  • Python——操作MySQL数据库

    😊学习永无止境,记得每天学习新的知识!! 在很多业务场景中,我们或多或少都要对数据库上的数据进行的一系列操作, 包括读取数据、写数据、更新或修改数据、删除数据 等。这些操作可以通过编写SQL语句来实现,也可以通过使用数据库管理系统提供的API接口来实现。

    2024年02月09日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包