关于python:小手一抬学Python-Python-与数据库那点事儿

41次阅读

共计 3836 个字符,预计需要花费 10 分钟才能阅读完成。

Python 操作 SQLite 数据库

意识 SQLite 数据库

SQLite 数据库在装置 Python 之后会主动装置到你的电脑上,通过它能够将数据长久的存储在本地电脑中,有人必定说了,咱们能够将数据存储到文件中啊,为啥要存储到数据库中呢?这个吧,必定是用着难受啊(说了跟没说一样)。说真的很多时候不必问为什么的,先上手,前面在补充这些概念类的货色,用数据库在某些场景下是比用文件好的,当然只是在某些场景。

在 Python 中通过 import sqlite3 导入模块。

SQLite 根本应用

数据库个别分为以下三步。

  1. 连贯数据库
  2. 操作数据库
  3. 敞开数据库

应用如下命令能够连贯数据库。

conn = sqlite3.connect("数据库名称")

该形式如果数据库存在,主动建设连贯,如果不存在,先创立数据库再建设连贯关系。应用结束记得及时敞开数据库。

conn.close()

上述代码中的 conn 就是一个一般的变量,个别叫做数据库连贯对象,记住也是一个对象,它必定有属性,也有办法。

请运行下述代码,在本地目录查看是否多出了一个文件。

import sqlite3

conn = sqlite3.connect("my_data.db")

conn.close()

建设 SQLite 数据库表

通过 connect 办法能够与数据库文件建设连贯,返回的对象是 connect 对象,这个对象罕用的办法如下。

  • close 敞开数据库连贯;
  • commit 更新数据库内容;
  • cursor 建设 cursor 对象,该对象能够执行 execute 办法;
  • execute 执行 SQL 数据库命令,例如数据表建设,查问,删除,更新。

SQLite 数据类型
在正式学习 SQLite 数据库操作之前,须要先学习一下该数据库中蕴含的几种数据类型,因为 SQLite 比较简单,所以波及的数据类型内容也不多。

  • NULL 空值;
  • INTEGER 整数;
  • REAL 浮点数;
  • TEXT 字符串;
  • BLOB 富文本数据,例如图片、歌曲。

有了上述内容之后就能够开始操作数据库了。在这之前还要补充一个概念,一个数据库能够蕴含多张表,翻译成艰深的话就是,一个 my_data.db 文件中能够蕴含多个表。

my_data.db 文件中建设第一张表。

import sqlite3

# 连贯到 my_data.db 数据库
conn = sqlite3.connect("my_data.db")

# 建设 cursor 对象
cursor = conn.cursor()
# 建表 SQL 语句
sql = """
create table students(
id int,
name text,
sex text,
age int
)
"""
# 执行 sql 语句
cursor.execute(sql)
# 敞开 cursor 对象
cursor.close()
# 敞开数据库连贯
conn.close()

相干正文曾经增加到代码中,留神 conn 对象与 cursor 对象,应用之后都须要敞开,并且 cursor 对象在 conn 对象之前敞开。

create table students(
id int,
name text,
sex text,
age int
)

| 该内容是一个建表 SQL 语句,其中 create table 表名称 (字段列表),每个字段定义都是依照 字段名 字段类型 格局设计的。通过该 SQL 语句就能够在数据库中建设一个 students 表,表中蕴含 4 列内容,别离是 idnamesexage。这里你能够将表看成一个相似表格的货色。

id name sex age

曾经创立 students 表之后,就不能够在创立雷同表名的表了。也就是在执行上述代码会报错,这时你就能够用到 try … except 语句了。

import sqlite3

# 连贯到 my_data.db 数据库
conn = sqlite3.connect("my_data.db")

# 建设 cursor 对象
cursor = conn.cursor()
# 建表 SQL 语句
sql = """
create table students(
id int,
name text,
sex text,
age int
)
"""
try:
    # 执行 sql 语句
    cursor.execute(sql)
except:
    print("数据库曾经存在该表")
# 敞开 cursor 对象
cursor.close()
# 敞开数据库连贯
conn.close()

表中减少数据

在数据库中建设表之后就能够减少数据了,表中的数据个别称为 记录,接下来应用插入数据的命令向表中减少一条学生数据。

import sqlite3

# 连贯到 my_data.db 数据库
conn = sqlite3.connect("my_data.db")

# 建设 cursor 对象
cursor = conn.cursor()
# 表中插入数据的 SQL
insert_sql = """insert into students values(?,?,?,?)"""
try:
    # 待插入的数据
    data = (1,"查理","男",18)
    # 执行 sql 语句
    cursor.execute(insert_sql,data)
    # 更新数据库内容,在插入数据、删除数据、更新数据的时候不要遗记该命令
    conn.commit()
except Exception as e:
    print("插入异样",e)
# 敞开 cursor 对象
cursor.close()
# 敞开数据库连贯
conn.close()

上述代码最外围的为 insert into students values(?,?,?,?),该内容也是 SQL 语句,执行该语句应用 execute 办法时,须要在该办法的第二个参数地位传入对应的数据,也就是说如果 SQL 语句中有三个问号,这里的第二个参数也应该是三个元素的元组。

查询数据库中的表数据

查问语句的 SQL 格局为:

select * from 表名

查问 students 表中的数据代码如下:

import sqlite3

# 连贯到 my_data.db 数据库
conn = sqlite3.connect("my_data.db")

# 建设 cursor 对象
cursor = conn.cursor()
# 查问语句 SQL
select_sql = """select * from students"""
try:

    # 执行 sql 语句
    results = cursor.execute(select_sql)
    print(results)
    for record in results:
        print(record)
except Exception as e:
    print("查问异样", e)
# 敞开 cursor 对象
cursor.close()
# 敞开数据库连贯
conn.close()

应用上述代码即可将数据库中指定表的数据全副读取进去。还有当咱们执行 results = cursor.execute(select_sql) 之后,输入的 results 对象类型为 <sqlite3.Cursor object at 0x00000000020DCB90>,该对象存在一个 fetchall 办法,应用该办法能够一次性将所有数据都寄存到一个元组内。

还有一个须要阐明,如果只想要某个数据表中的某一列,不想要全副数据,应用的 SQL 语句语法格局为:

select 列名, 列名 from 表名

更新表数据

更新数据表中的数据用到的关键词是 update,语法格局如下:

update 表 set 列名 = 新值, 列名 = 新值...
where 条件

这里的 SQL 语法格局变的绝对简单了一些,次要减少了 where 条件判断,先实现以下代码内容。

import sqlite3

# 连贯到 my_data.db 数据库
conn = sqlite3.connect("my_data.db")

# 建设 cursor 对象
cursor = conn.cursor()
# 批改语句 SQL
update_sql = """update students set name =" 大查理 " ,age=20
where id = 1
"""
try:

    # 执行 sql 语句
    cursor.execute(update_sql)
    conn.commit()
except Exception as e:
    print("更新异样", e)
# 敞开 cursor 对象
cursor.close()
# 敞开数据库连贯
conn.close()

执行更新操作,将 查理 更新为了 大查理,能够应用查问语句查看一下表中的数据是否失去批改。

Python 操作数据库重点其实是 SQL 语句的熟练程度,本篇博客中波及的 SQL 语句只是冰山一角,对于 SQL 语句其实是存在业余的语法结构的,在后续再次滚雪球的时候,将为你开展阐明。

在更新表中列数据的时候,第一个要留神肯定要减少 where 条件,否则话整个表就都被更新了;第二个肯定要确定好列名,否则找不到列名也会报错的哦。

删除表数据

学习了插入与更新之后,删除表数据就变得简略多了,记住 SQL 的语法格局就能够:

delete from 表名
where 条件

当 where 条件满足的时候,就会删除对应的数据,肯定要留神如果没有写 where 条件,整个表就被删除了。

\` 如果你不想 删库跑路,那记住一点,当对数据库中任意表执行更新或者删除操作的时候,肯定都要写上 where 条件 \`

这篇博客的总结

本篇博客如果是第一次学习 Python 的敌人关上,其实难度很大,因为外面波及了另一个语言体系叫做 SQL 语言,一种对数据库进行操作的语法,学习该语法之后其实对很多数据库都能够进行简略的操作了,难堪的是如果你第一次学习,你须要一边看 Python 语法,一边看 SQL 语法,很容易两个都学起来迷糊,不过不要放心,毕竟这只是第一遍滚雪球,置信第二次再来你会更加有自信的。

正文完
 0