Python知识整合(操作数据库)

1、数据库编程接口

市面有多种数据库如mysql、SQLite等等。为了对数据库进行统一的操作,大多数语言提供了简单的、标准化的数据库接口(API)。在Python Database API 2.0规范中,定义了Python数据库API接口的各个部分。下面我将介绍数据库API接口中的连接对象和游标对象

1.1、连接对象

数据库连接对象(Connection Object)主要提供数据库游标对象和提交/回滚事物的方式,以及关闭数据库连接。

1.11、获取连接对象

使用connect()函数获取数据库连接,改函数具有多个参数,具体使用那个参数,根据数据库的类型而定。

onnect()函数参数说明表

参数说明
dsn数据源名称,给出该参数表示数据库依赖
user用户名
password用户密码
host主机名
database数据库名称

例子,使用PyMySql模块连接MySQL数据库(在下面内容中会详细介绍)。

conn = pymysql.connect(host='localhost', 
						user='user',
						password='passwd',
						charset='utf-8'
						cursorclass=pymysql.cursors.DictCursor)

注意pymysql.connect()使用的参数与上表不完全相同,要以具体的数据库模块为准。

1.12、连接对象方法

connect()函数返回连接对象,这个连接对象表示目前和数据库的会话。连接对象支持的方法如下表

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

1.2、游标对象

游标对象(Cursor Object)代表数据库中的游标,用于指示抓取数据操作的上下文,主要提供执行SQL语句、调用存储过程等。

通过cursor()方法可以获取游标对象。

游标对象的属性:1、description:数据库列表类型和值的描述信息。2、rowcount():返回结果的函数统计信息,如SELECT、UPDATE等

游标对象的方法如下表

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

2、使用SQLite

SQLite(c语言写的)是一种嵌入式数据库,它的数据库是一个文件。体积小,且可以跨平台使用,经常被嵌入到各种应用程序。python中内置了SQLite3。

2.1、创建数据库文件

python操作数据流的流程

开始>>创建connection(连接)>>获取cursor(游标)>>执行SQL语句,处理数据结果>>关闭cursor(游标)>>关闭connection(连接)

import sqlite3   # 连接到SQLite数据库
conn = sqlite3.connect('1.db')   # 数据库文件是test.db,如果文件不存在,会在当前目录创建
cursor = conn.cursor()  # 创建一个Cursor
cursor.execute('create table user (id int(10) primary key, name varchar(20))')  # 执行一条SQL操作,创建user表
cursor.close()  # 关闭游标
conn.close()  # 关闭连接

2.2、操作SQLite

2.21、新增用户数据信息

使用以下SQL语句

insert into 表名 (字段名1,字段名1,........) values(字段值1,字段值2,.......)

例子

    import sqlite3   # 连接到SQLite数据库
    conn = sqlite3.connect('name.db')   # 数据库文件是test.db,如果文件不存在,会在当前目录创建
    cursor = conn.cursor()  # 创建一个Cursor
    # 执行一条SQL操作,创建user表
    cursor.execute('create table user (id int(10) primary key, name varchar(20))')
    # 执行一条SQL操作,向表user插入一条记录
    cursor.execute('insert into user (id, name) values ("1","wr")')
    cursor.execute('insert into user (id, name) values ("2","小明")')
    cursor.close()  # 关闭游标
    conn.commit()  # 提交事物
    conn.close()  # 关闭连接

为了验证程序是否正常可以再次运行程序,如果出现如下异常

sqlite3.OperationalError: table user already exists

则说明数据成功插入

2.22、查看用户数据信息

可以使用以下SQL语句

select 字段名1,字段名2,..... from 表名 where 查询条件

fetchone():查询结果集中的下一条记录
fetchmany(size) :获取指定数量的记录
fetchall():获取结果集的所有记录

例子

import sqlite3   # 连接到SQLite数据库
conn = sqlite3.connect('name.db')   # 数据库文件是name.db,如果文件不存在,会在当前目录创建
cursor = conn.cursor()  # 创建一个Cursor

# 执行查询语句
cursor.execute('select * from user') 
# 获取查询结果
result = cursor.fetchone()
print(result)

cursor.close()  # 关闭游标
conn.close()  # 关闭连接

修改上述 cursor.execute('select * from user') 这句代码为cursor.execute('select * from user where id > ?',(1,)),其中使用问号作为占位符代替具体的值,然后使用最后一个元组来替换问号,注意元组最后面的逗号不能省略
修改后的代码等价于cursor.execute('select * from user where id > 1)
不过推荐占位符的方式,因为可以有效防止SQL注入

2.23、修改用户数据信息

可以使用以下sql语句

update 表名 set 字段名 = 字段值 where 查询语句

例子,将ID=1的name改为WR

import sqlite3   # 连接到SQLite数据库
conn = sqlite3.connect('name.db')   # 数据库文件是test.db,如果文件不存在,会在当前目录创建
cursor = conn.cursor()  # 创建一个Cursor

cursor.execute('update user set name = ? where id = ?', ('WR', 1))
# 执行查询语句
cursor.execute('select * from user')
# 获取查询结果
result1 = cursor.fetchall()
print(result1)

cursor.close()  # 关闭游标
conn.commit() # 提交事务
conn.close()  # 关闭连接

2.24、删除用户信息

可以使用以下sql语句

delete from 表名 where 查询语句

3、使用MySQL

可以直接安装phpstudy集成环境,包括mysql和apache数据库及其环境。安装步骤可以百度

3.1、安装PyMySQL模块

在python中支持MYSQL的数据库模块很多,我们选择PyMySQL模块
在命令行使用下面语句 pip install PyMySQL安装PyMySQL模块

3.2、连接数据库

PyMySQL模块也遵循Python Database API 2.0规范,故MySQL的操作方法与SQLite类似
例子

import pymysql

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

输出

database version: 5.5.53

3.3、创建数据表

例子:通过execute()方法创建表books(图书表)。books包含id(主键),name(图书名),category(图书馆分类),price(图书馆价格)

import pymysql

# 打开数据库连接,参数1:主机名或IP;参数2:用户名;参数3:密码;参数4;数据库名称
db = pymysql.connect("localhost", "root", "390800956", "mydata")
# 通过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,
    PRIMARY KEY (id)   
)   ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
"""
cursor.execute(sql)

# 关闭数据库连接、
db.close()

3.4、操作数据表

可以execute()方法添加一条记录,也可以使用executemany()方法进行批量添加记录
语法格式

executemany(operation,seg_of_params)

说明:
operation:执行的sql语句
seg_of_params:参数序列

例子

import pymysql

# 打开数据库连接,参数1:主机名或IP;参数2:用户名;参数3:密码;参数4;数据库名称
db = pymysql.connect("localhost", "root", "390800956", "mydata", charset="utf8")
# 通过cursor()函数创建一个游标对象cursor
cursor = db.cursor()
# 数据列表
data = [("《见识》", "literature", "50.00"),
        ("《智能时代》", "data", "70.00"),
        ("《活着》", "literature", "23.00")]
try:
    # 执行SQL语句,插入多条数据
    cursor.executemany("insert into books (name, category, price) values (%s, %s, %s)", data)
    # 提交数据
    db.commit()
except:
    # 发送错误时回滚
    db.rollback()
# 关闭数据库连接、
db.close()

在上面的代码中要注意
1、在使用connect()方法时,设置charset=“utf8”,为得是识别中文
2、在使用insert语句插入数据时,使用%s作为占位符,防止SQL注入

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
知识图谱系统是一种用于组织和呈现知识的工具,可以将不同领域的知识整合在一个统一的图谱中。Python是一种功能强大的编程语言,可以用于构建知识图谱系统的源代码。 在构建知识图谱系统的Python源代码中,首先我们需要定义和创建图谱的节点和边。节点代表图谱中的实体,边代表实体之间的关系。可以使用Python的类来定义节点和边的结构,然后使用列表或字典等数据结构来存储这些节点和边的信息。 接下来,我们需要通过各种方法来填充知识图谱系统。这包括从各种数据源中收集数据,例如文本文件、数据库API等,并将其转换为节点和边的表示形式。可以使用Python的文件操作数据库连接API调用等功能来实现数据的获取和转换。 在知识图谱系统中,还需要实现一些常用的图谱操作,例如添加节点、添加边、删除节点、删除边等。这些操作可以通过定义相应的函数或方法来实现,并与节点和边的数据结构进行交互。Python提供了丰富的函数和方法库,可以轻松实现这些操作。 除了基本的操作,还可以实现一些高级功能,例如查询节点、查询路径、计算节点的属性等。这些功能可以通过编写适当的查询语句或算法来实现,然后与节点和边的数据结构进行交互。在Python中,可以使用字符串操作、循环和条件语句等功能来实现这些功能。 最后,为了方便用户使用和操作知识图谱系统,可以实现一些用户界面。可以使用Python的图形界面库如Tkinter或PyQt来创建用户界面,并将知识图谱的操作和查询功能与界面进行交互。 总之,知识图谱系统的Python源代码可以通过定义节点和边的数据结构、实现基本的操作和高级功能、以及创建用户界面来完成。通过使用Python的强大功能和库,可以方便地构建一个功能完善的知识图谱系统。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值