哈喽大家好呀,又见面了我是你们的滑稽君。因为疫情原因,各地开学时间都推迟了,之前看了一下我们这学期的课程表。除了开了Java课之外,数据库的相关课程也赫然在列。我们本期要说的就是python数据库处理方面的sqlite3模块。sqlite3 模块程序,可以满足我们在 Python 程序中使用 SQLite 数据库的需求。自python2.5之后,该模块已经属于自带模块了无需安装,我们直接import导入即可。让我们直接看源代码。
#建立一个数据库
import sqlite3
conn = sqlite3.connect('test.db')
print("Opened database successfully")
#在我们没有添加路径的情况下这段代码在当前目录连接一个新的数据库,如果没有将创建一个.
#实际上我们可以添加路径,在我们想要的任意位置建立数据库。
#这段代码将在之前创建的数据库里创建一个表。
import sqlite3
conn = sqlite3.connect('test.db')
print("Opened database successfully")
c = conn.cursor()#
c.execute('''CREATE TABLE COMPANY
(ID INT PRIMARY KEY NOT NULL,
NAME TEXT NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(50),
SALARY REAL);''')
print("Table created successfully")
conn.commit()#这步功能是提交当前事务,如果忘记添加这段代码,之前的操作相当于没有执行。
conn.close()
#NOT NULL这代表这部分产生不能为空,如果在插入或更新时没有传入id、name、age的值那么操作将失败,及必填项
#在规定输入类型时text、int包括char都好理解,可能肯定小伙伴对real不熟悉,实际上就是浮点数的意思。
#有数据库知识的小伙伴们一个明白,id将是一个自增(减)项,也是我们这张表的‘码’
#在上面创建的 COMPANY 表中创建记录,实际上到这一步为止我们的表已经完成了。
import sqlite3
conn = sqlite3.connect('test.db')
c = conn.cursor()
print("Opened database successfully")
c.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
VALUES (1, 'Paul', 32, 'California', 20000.00 )");
c.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
VALUES (2, 'Allen', 25, 'Texas', 15000.00 )");
c.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
VALUES (3, 'Teddy', 23, 'Norway', 20000.00 )");
c.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 )");
conn.commit()
print("Records created successfully")
conn.close()
#这步传入数值的时候要注意id、name和age全部一个都不能少,因为我们之前设置的NOT NULL的约束,这三项的必填的。
经过上面三步,我们分别实现了python在当前目录创建了一个数据库,在里面创建了一个表,在表中放入我们的数据。到这里我们已经制作完成了一个数据库。那么让我们看一下python有没有按照我们的意愿输入我们的数据呢。我们来看一下我们刚才存放的数据。
#这段代码是获取并显示表中的记录
import sqlite3
conn = sqlite3.connect('test.db')
c = conn.cursor()
print("Opened database successfully")
cursor = c.execute("SELECT id, name, address, salary from COMPANY")
for row in cursor:
print("ID = ", row[0])
print("NAME = ", row[1])
print("ADDRESS = ", row[2])
print("SALARY = ", row[3], "\n")
print("Operation done successfully")
conn.close()
#我们没有获取age的值,尽管我们之前输入了他。这也是数据库自由的选择性。我们可以只查看我们想要的数据。
#下面为运行结果。
Opened database successfully
ID = 1
NAME = Paul
ADDRESS = California
SALARY = 20000.0
ID = 2
NAME = Allen
ADDRESS = Texas
SALARY = 15000.0
ID = 3
NAME = Teddy
ADDRESS = Norway
SALARY = 20000.0
ID = 4
NAME = Mark
ADDRESS = Rich-Mond
SALARY = 65000.0
Operation done successfully
可以看到python分毫不差的录入了我们刚才提供的信息。