0
点赞
收藏
分享

微信扫一扫

【案例】做一个电话簿(二)


文章目录

  • ​​0. 前言​​
  • ​​1. 设计表格​​
  • ​​2. 创建数据库以及表格​​
  • ​​3. 代码汇总​​
  • ​​4. 运行结果​​
  • ​​5. 下周计划​​
  • ​​6. 不足之处​​

0. 前言

今天我们来继续设计我们的电话簿,今天的内容是设计一个数据库表格,并且编写相关代码。

1. 设计表格

对于一个电话簿,它有哪些要素呢?这里我们仅仅简单考虑。

我列出了以下这些关键信息,旨在建立一个最初级的演示模型。

  1. ID
  2. 姓名
  3. 号码
  4. 电子邮件
  5. 备注

上面这 5 点中,第 1 点 ID 是主键,是唯一表示每个人的关键,因为如果仅用人名来区别每一个人,可能会存在重名的情况;如果用号码来区别每一个人,可能会存在每个人有众多电话号码的情况,也无法区别。

2. 创建数据库以及表格

我们使用了 Python3 内置的数据库——SQLite,所以并不需要安装,并且数据库仅仅是一个以 db 结尾的文件而已,超级轻量级,对于数据库的查看,需要下载一个软件——SQLiteExpertPers64。

def create_database():
"""
创建数据 ProjectDataBase.db
"""
conn = sqlite3.connect(DBPath) # DBPath:数据库文件创建的路径
conn.close()
print('** 创建数据库 %s 成功! **' % DBName)
create_tables() # 前往创建表

该代码就是创建数据库的代码,是不是很简单?最后就会生成下面这个样子的一个文件。

【案例】做一个电话簿(二)_创建数据库

关于表格的创建,我们这个小项目只需要创建一个表即可,表项的内容如第一部分所述,创建页表的代码如下所示:

def create_tables():
"""
创建数据库表
"""
conn = sqlite3.connect(DBPath)
c = conn.cursor()

# 执行 DDL 语句创建 class_table
c.execute("""
create table phoneNumber_table(
ID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, # 自增 ID
Name varchar(20), # 姓名
Number char(11), # 号码
Email char(30), # 邮箱
Note text) # 备注
""")
# 关闭游标
c.close()
# 关闭连接
conn.close()

上面的代码可以看作是使用 sqlite 操作数据库的模板,使用 sqlite 操作数据库需要先建立链接、创建游标、执行 SQL 语句等步骤。创建数据库以及创建表,乃至后面向数据库中插入数据都是在执行 SQL 语句这个步骤中写的。

ID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, # SQLite 中设置自增字段写法

3. 代码汇总

# 电话簿
import os
import sqlite3

# 本脚本名称
scriptPath = __file__
# scriptName = os.path.basename(__file__)
# 数据库创建路径
DBName = "\phoneNumberDB.db"
DBPath = os.path.split(os.path.realpath(__file__))[0] + DBName


def create_database():
"""
创建数据 ProjectDataBase.db
"""
conn = sqlite3.connect(DBPath)
conn.close()
print('** 创建数据库 %s 成功! **' % DBName)
create_tables()

def create_tables():
"""
创建数据库表
"""
conn = sqlite3.connect(DBPath)
c = conn.cursor()

# 执行 DDL 语句创建 class_table
c.execute("""
create table phoneNumber_table(
ID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
Name varchar(20),
Number char(11),
Email char(30),
Note text)
""")
# 关闭游标
c.close()
# 关闭连接
conn.close()

def Insert_data(dataTuple=()):
"""
插入数据
"""
conn = sqlite3.connect(DBPath)
c = conn.cursor()
# c.execute('PRAGMA foreign_keys = ON;')
c.execute(
'insert into phoneNumber_table values(?, ?, ? ,? ,?)',
dataTuple
)
conn.commit()
c.close()
conn.close()
print('插入数据:', dataTuple, '成功!')

if __name__ == "__main__":
# create_database()
Insert_data(dataTuple=(None, 'jack', '1234567890', 'abc@163.com', ''))

4. 运行结果

【案例】做一个电话簿(二)_数据库_02

我们的表创建成功了,并且也能够成功插入数据。

5. 下周计划

  • 制作 GUI

6. 不足之处

  • 如果一个人有多个号码怎么办?可以再新建一个表,用表连接的方式来实现。

【案例】做一个电话簿(二)_sqlite_03


举报

相关推荐

0 条评论