第13章 数据库编程

Python数据库API简介

各数据库模块共有的全局变量

apilevel

API版本号,为2.0时,支持python

threadsafety 线程安全等级

0123
含义线程不能共享共享模块,不共享连接线程完全安全

paramstyle 参数风格

formatpyformatqmarknumericnamed
Python标准参数扩展的格式代码问号(:N)(:name)
%s等%(name)【:2】:2个参数命名占位符

# 数据库API的核心类

数据库连接对象

基本方法与属性

属性作用
isolation_level返回或设置数据库连接中,事务的隔离级别
in_transaction判断当前是否处于事务中
autocommit设置为True时,执行DML语句后自动提交,无须调用commit()方法
基本方法cursor(factory=Cursor)close()commit()rollback()
作用打开游标关闭数据库连接提交事务回滚事务

更多方法

  1. 注册自定义函数 create_function(name, num_params, func)
    |参数|name|num_params|func|
    |:----|:----|:----|:----|
    |含义|函数名称(自定义)|参数个数|函数名称(前置)|
def test():print(1)
mydb.create_function('my_name', 0, test)
  1. 注册聚集函数 create_aggregate(name, num_params, aggregate_class)
    |参数|name|num_params|aggregate_class|
    |:----|:----|:----|:----|
    |含义|函数名称(自定义)|参数个数|聚集函数类名|

常见的聚集函数:sum(), avg(), count(), max(), min()

  1. 注册比较函数 create_collation(name, callable)
    callable:包含2个待比较的参数str1, str2
比较结果str1 = str2str1 > str2str1 < str2
返回值0正整数负整数
def test():
    if str1 == str2:  return 0
    elif str1 > str2: return 1
    else:             return -1
mydb.create_collation('my_name', test)

游标对象

方法fetchone()fetchmany(size=cursor.arraysize)fetchall()
获取查询结果一行多行,size默认为1全部行
方法execute()executemany()executescript
参数sql, [para]sql, seq‘sql1; sql2; …’
参数解释para:sql中的参数seq:参数的序列
执行sql语句一次重复执行(不用于select语句)执行多条
111
属性返回内容
rowcount受SQL语句影响的行数
lastrowid最后修改行的id
description最后一次查询返回的所有列的信息
connection创建游标的数据库连接对象

# 操作数据库的基本流程

import mysql.connector
mydb = mysql.connector.connect(host="localhost", user="name", passwd="123", database='AAA')  #连接数据库
mycursor = mydb.cursor()       #打开游标  
mycursor.execute(sql)          #执行SQL语句
#[处理结果]
mycursor.close()               #关闭游标
mydb.close()                   #关闭数据库连接

# SQLite数据库(内置)

只是一个数据库,不需要服务器进程。常用于手机等资源有限的设备。

界面管理工具下载地址:sqliteexpert.com/download.html

创建数据库

import sqlite3
mydb = sqlite3.connect('test.db')  #打开/创建test.db数据库
  • 如需创建内存中的数据库,使用特殊的数据库名称【:memory:】即可

创建数据表

获取游标——通过SQL语句创建

mycursor = mydb.cursor()
mycursor.execute('create table first_table(name, gender)')

事务控制

事务:多步数据库操作组成的逻辑执行单元,具有以下特性:

  1. 原子性:最小的执行单位,不可再分
  2. 一致性:要么全部成功执行,要么全部失败
  3. 隔离性:各事务的执行互不干扰
  4. 持久性:对数据的改变是永久的,不可逆的
    回滚事务:事务执行失败时执行,有2种方式
自动回滚系统错误,强制退出时
手动回滚调用数据库连接对象的rollback

MySQL数据库(开源)

下载与安装

  1. 下载地址:dev.mysql.com/downloads/mysql,选择社区版 MSI Installer

  2. 自定义安装:

    1. 选择安装地址
    2. 勾选MySQL Server 8.0.11 - X64下所有选项 + Connector/Python(3.0) 8.0.11 - X64
    3. 选中Standalone MySQL Server/Classic MySQL Replication
    4. 设置账号、密码,可添加用户
  3. 启动编辑窗口
    5. MySQL自带的命令行窗口:
    【开始】——MySQL Server 8.0 —— MySQL 8.0 command Line Client - Unicode

    1. 更多工具:SQLyog, MySQLAdministrator

使用pip工具管理模块

代码作用
pip list查看已安装的所有模块
pip show 模块名称查看已安装的指定模块
pip install 模块名称 (==1.0.4)安装模块(可指定版本号)
pip uninstall 模块名称卸载模块
  • 在CMD界面下操作
  • 例:查看【Connector/Python】是否安装成功:pip show mysql-connector-python

调用存储过程

在MySQL的命令行界面中操作

delimiter//
create procdure add_pro(a int, b int, out sum int)
begin
set sum = a + b
end;
//

调用方法:在python中,连接数据库,创建游标对象

a = c.callpro("add_pro", (5,6,0))  #(5,6,11 )

# SQLite与MySQL的区别

SQLiteMySQL
存入数据时,限制数据类型允许忽略不可忽略
远程服务器IP与端口号不可指定可指定(默认为localhost, 3306端口)

# DDL与DML语句

DDL语句Data Definition Languagecreate, alter, drop, truncate
DML语句Data Manipulation Language增删改查
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ailsa2019

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值