操作数据库
"""
本文件是【连接数据库:通过链和代理查询鲜花信息】章节的配套代码,课程链接:https://juejin.cn/book/7387702347436130304/section/7388065974408183858
您可以点击最上方的“运行“按钮,直接运行该文件;更多操作指引请参考Readme.md文件。
"""
# 导入sqlite3库,它是Python内置的轻量级数据库。
import sqlite3# 连接到数据库
conn = sqlite3.connect("FlowerShop.db")
cursor = conn.cursor()# 执行SQL命令来创建Flowers表
cursor.execute("""CREATE TABLE Flowers (ID INTEGER PRIMARY KEY, Name TEXT NOT NULL, Type TEXT NOT NULL, Source TEXT NOT NULL, PurchasePrice REAL, SalePrice REAL,StockQuantity INTEGER, SoldQuantity INTEGER, ExpiryDate DATE, Description TEXT, EntryDate DATE DEFAULT CURRENT_DATE );"""
)# 插入5种鲜花的数据
flowers = [("Rose","Flower","France",1.2,2.5,100,10,"2023-12-31","A beautiful red rose",),("Tulip","Flower","Netherlands",0.8,2.0,150,25,"2023-12-31","A colorful tulip",),("Lily", "Flower", "China", 1.5, 3.0, 80, 5, "2023-12-31", "An elegant white lily"),("Daisy","Flower","USA",0.7,1.8,120,15,"2023-12-31","A cheerful daisy flower",),("Orchid","Flower","Brazil",2.0,4.0,50,2,"2023-12-31","A delicate purple orchid",),
]for flower in flowers:cursor.execute("""INSERT INTO Flowers (Name, Type, Source, PurchasePrice, SalePrice, StockQuantity, SoldQuantity, ExpiryDate, Description) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?);""",flower,)# 提交更改
conn.commit()# 关闭数据库连接
conn.close()
这段代码是一个Python脚本,用于操作SQLite数据库。下面是对代码的逐行解释:
-
import sqlite3
:导入Python的sqlite3模块,该模块提供了轻量级的磁盘基数据库,不需要独立的服务器进程。 -
conn = sqlite3.connect("FlowerShop.db")
:创建一个连接到名为"FlowerShop.db"的SQLite数据库的连接对象。如果数据库文件不存在,会自动创建。 -
cursor = conn.cursor()
:创建一个光标对象,用于执行SQL命令。
4-11. 这部分代码执行了一个SQL命令来创建一个名为"Flowers"的表。表中有多个字段,包括ID(主键)、Name(花的名字)、Type(花的类型)、Source(产地)、PurchasePrice(购买价格)、SalePrice(销售价格)、StockQuantity(库存数量)、SoldQuantity(已售数量)、ExpiryDate(过期日期)、Description(描述)和EntryDate(录入日期,默认值为当前日期)。
12-21. 定义了一个名为flowers
的列表,其中包含了五种鲜花的数据,每种花的数据是一个元组,包含了上述表中定义的字段。
22-28. 使用一个for循环遍历flowers
列表中的每个元组,并对每种花执行一个SQL插入命令,将花的数据插入到"Flowers"表中。
-
conn.commit()
:提交之前的所有更改,确保这些更改被保存到数据库中。 -
conn.close()
:关闭数据库连接。
这段代码的目的是创建一个数据库表,并在该表中插入一些鲜花的数据。这些数据可以用来管理一个花店的库存和销售信息。
数据库的常用命令会根据你使用的数据库管理系统(DBMS)的不同而有所差异。以下是一些常见的数据库系统及其常用的命令:
MySQL/MariaDB
- 连接数据库:
mysql -u username -p
- 选择数据库:
USE database_name;
- 显示数据库列表:
SHOW DATABASES;
- 显示表列表:
SHOW TABLES;
- 查询表结构:
DESCRIBE table_name;
- 查询数据:
SELECT * FROM table_name;
- 插入数据:
INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);
- 更新数据:
UPDATE table_name SET column1 = value1 WHERE condition;
- 删除数据:
DELETE FROM table_name WHERE condition;
- 添加新表:
CREATE TABLE table_name (column1 datatype, column2 datatype, ...);
- 删除表:
DROP TABLE table_name;
- 创建索引:
CREATE INDEX index_name ON table_name (column);
- 删除索引:
DROP INDEX index_name ON table_name;
- 备份数据库:
mysqldump -u username -p database_name > backup.sql
- 恢复数据库:
mysql -u username -p database_name < backup.sql
PostgreSQL
- 连接数据库:
psql -U username -d database_name
- 显示数据库列表:
\l
- 显示表列表:
\dt
- 查询表结构:
\d+ table_name
- 查询数据:
SELECT * FROM table_name;
- 插入数据:
INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);
- 更新数据:
UPDATE table_name SET column1 = value1 WHERE condition;
- 删除数据:
DELETE FROM table_name WHERE condition;
- 添加新表:
CREATE TABLE table_name (column1 datatype, column2 datatype, ...);
- 删除表:
DROP TABLE table_name;
- 创建索引:
CREATE INDEX index_name ON table_name (column);
- 删除索引:
DROP INDEX index_name;
- 备份数据库:
pg_dump -U username database_name > backup.sql
- 恢复数据库:
psql -U username -d database_name < backup.sql
SQLite
- 连接数据库:
sqlite3 database_name.db
- 显示表列表:
.tables
- 查询表结构:
.schema table_name
- 查询数据:
SELECT * FROM table_name;
- 插入数据:
INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);
- 更新数据:
UPDATE table_name SET column1 = value1 WHERE condition;
- 删除数据:
DELETE FROM table_name WHERE condition;
- 添加新表:
CREATE TABLE table_name (column1 datatype, column2 datatype, ...);
- 删除表:
DROP TABLE table_name;
- 创建索引:
CREATE INDEX index_name ON table_name (column);
- 删除索引:
DROP INDEX index_name;
- 备份数据库:
.output backup.db .dump .output stdout
- 恢复数据库:
.read backup.db
SQL Server
- 连接数据库:
sqlcmd -U username -P password
- 显示数据库列表:
EXEC sp_helpdb;
- 显示表列表:
SELECT name FROM sys.tables;
- 查询表结构:
EXEC sp_columns table_name;
- 查询数据:
SELECT * FROM table_name;
- 插入数据:
INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);
- 更新数据:
UPDATE table_name SET column1 = value1 WHERE condition;
- 删除数据:
DELETE FROM table_name WHERE condition;
- 添加新表:
CREATE TABLE table_name (column1 datatype, column2 datatype, ...);
- 删除表:
DROP TABLE table_name;
- 创建索引:
CREATE INDEX index_name ON table_name (column);
- 删除索引:
DROP INDEX index_name ON table_name;
- 备份数据库:
BACKUP DATABASE database_name TO DISK = 'backup.bak';
- 恢复数据库:
RESTORE DATABASE database_name FROM DISK = 'backup.bak';
请注意,这些命令是基础的,实际使用时可能需要根据具体情况进行调整。此外,对于复杂的操作,如事务处理、存储过程、触发器等,命令会更加复杂。