python学习笔记十(连接并操控数据库)

数据库编程接口

连接对象

数据库连接对象(Connection Object)主要提供获取数据库游标对象和提交、回滚事务的方法,以及关闭数据库连接。
connect() 函数常用的参数及说明如下表

参数说明
dns数据源名称,给出该参数表示数据库依赖
user用户名
password用户密码
host主机名
database数据库名称
connect = pymysql.connect(host="localhost",
                          user="user",
                          password="root",
                          db="ivps",
                          charset="utf-8",
                          cursorclass=pymysql.cursors.DictCursor)

连接对象方法如下表

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

游标对象的方法如下表

方法名说明
callproc(procname,[, parameters])调用存储过程,需要数据库支持
close()关闭当前游标
execute(operation[, parameters)执行数据库操作,SQL语句或者数据库命令
executemany(operation,seq_of_ params)用于批量操作,如批量更新
fetchone()获取查询结果集中的下一条记录
fetchmany(size)获取指定数量的记录
fetchall()获取结果集的所有记录
nextset()跳至下一个可用的结果集
arraysize指定使用fetchmany()获取的行数,默认为1
setinputsizes(sizes)设置在调用execute*()方法时分配的内存区域大小
setoutputsize(sizes)设置列缓冲区大小,对大数据列(如LONGS和BLOBS)尤其有用

SQLite数据库

与许多其他数据库管理系统不同,SQLite 不是一一个客户端/服务器结构的数据库引擎,而是一种嵌入式数据库,它的数据库就是一个文件。SQLite 将整个数据库,包括定义,表、索引以及数据本身,作为一个单独的、可跨平台使用的文件存储在主机中。由于SQLite本身是C写的,而且体积很小,所以,经常被集成到各种应用程序中。Python 就内置了sQLite3, 所以在Python中使用SQLite,不需要安装任何模块,直接使用。
import sqlite3  #导入模块
connect = sqlite3.connect("ces.db") #连接数据库
cursor = connect.cursor()  #创建游标
cursor.execute("create table user(id int(10) primary key,name varchar(20))") #执行sql语句
cursor.close() #关闭游标
connect.close() #关闭连接

添加数据

由于是新增数据,需要使用commit()方法提交事务。因为对于增加、修改和删除操作,
使用commit)方法提交事务后,如果相应操作失败,可以使用rollback()方法回滚到操作之前的状态

import sqlite3  #导入模块
connect = sqlite3.connect("ces.db")
cursor = connect.cursor()
cursor.execute("insert into user(id,name) values(1,'我是一号')")
cursor.execute("insert into user(id,name) values(2,'我是二号')")
cursor.execute("insert into user(id,name) values(3,'我是三号')")
cursor.close()
connect.commit() #提交事务
connect.close()

查看用户信息

获取查询数据方法如下表

方法名说明
fetchone()获取查询结果集中的下一条记录
fetchmany(size)获取指定数量的记录
fetchall()获取结构集的所有记录
import sqlite3  #导入模块
connect = sqlite3.connect("ces.db")
cursor = connect.cursor()
cursor.execute("select * from user")
result1 = cursor.fetchone()
result2 = cursor.fetchmany(2)
result3 = cursor.fetchall()
print(result1)  #得到 (1, '我是一号')
print(result2)  #得到 [(1, '我是一号'), (2, '我是二号')]
print(result3)  #得到 [(1, '我是一号'), (2, '我是二号'), (3, '我是三号')]
cursor.close()
connect.close()

如果已经打印了result1,那么再次打印的result2中不包含result1的内容

修改cursor.execute("select * from user")为cursor.execute("select * from user where id > ?",(1,))
得出
[(2, '我是二号'), (3, '我是三号')]
即不打印第一行数据

修改数据

语法:update 表名 set 字段名 = 字段值 where 条件

import sqlite3  #导入模块
connect = sqlite3.connect("ces.db")
cursor = connect.cursor()
cursor.execute("update user set name=? where id=?",("我被修改了",1))
cursor.execute("select * from user")
result = cursor.fetchall()
print(result)
connect.commit()
cursor.close()
connect.close()
[(1, '我被修改了'), (2, '我是二号'), (3, '我是三号')]

删除数据

语法:delete from 表明 where 查询条件

import sqlite3  #导入模块
connect = sqlite3.connect("ces.db")
cursor = connect.cursor()
cursor.execute("delete from user where id=?",(1,))
cursor.execute("select * from user")
result = cursor.fetchall()
print(result)
connect.commit()
cursor.close()
connect.close()
[(2, '我是二号'), (3, '我是三号')]

Mysql

安装pymysql

pip install pymysql

连接数据库

import pymysql
db = pymysql.connect("localhost","root","root","ces") #分别代表主机地址、用户名、密码、数据库名称
#连接数据库一般以下面的方法为准,不会出错
db = pymysql.connect(host="127.0.0.1",
                       port=3306,
                       user="root",
                       passwd="root",
                       db="mrsoft",
                       charset="utf8")
cursor = db.cursor() #创建游标
cursor.execute("select version()") #通过游标查询数据库版本
result = cursor.fetchall() #获取全部查询结果
print(result) #打印查询结果
cursor.close() #关闭游标
db.close() #关闭连接

创建表格

import pymysql
dbmysql = pymysql.connect("localhost","root","root","ces") #分别代表主机地址、用户名、密码、数据库名称
cursor = dbmysql.cursor() #创建游标
cursor.execute("DROP TABLE IF EXISTS book") #如果存在book表则删除
sql = """
create table book(
xno int(4) primary key,
xname varchar(20) not null,
loc varchar(20),
index collage_index(xname)
)engine=innodb default charset=utf8; 
"""
cursor.execute(sql)
cursor.execute("SHOW DATABASES;") #查询数据库所有表名称
result = cursor.fetchall() #获取全部查询结果
dbmysql.commit()
print(result) #打印查询结果
cursor.close() #关闭游标
dbmysql.close() #关闭连接

插入MySQL表的数据

import pymysql
db = pymysql.connect("localhost","root","root","ces")
cursor = db.cursor()
data = [(1,'lihua','dhdt'),
        (2,'daming','hd'),
        (3,'xiaohong','rrr'),
        ]
try:
    cursor.executemany("insert into book(xno,xname,loc) VALUES (%s,%s,%s)",data)
    #cursor.execute("INSERT INTO book(xno,xname,loc) VALUES(1,'lihua','dhdt'),(2,'daming','hd'),(3,'xiaohong','rrr')")
    db.commit()
except:
    print("发送错误,回滚")
    db.rollback()
db.close()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小桃子的思念

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

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

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

打赏作者

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

抵扣说明:

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

余额充值