📌  相关文章
📜  使用 sqlalchemy 创建 sqlite3 数据库 - Python (1)

📅  最后修改于: 2023-12-03 15:22:16.878000             🧑  作者: Mango

使用 sqlalchemy 创建 sqlite3 数据库 - Python

在 Python 中,我们可以使用 SQLAlchemy 库来管理数据库。它是一个 SQL 工具包和 ORM,支持多种不同的数据库系统,并提供了一种通用的方式来使用这些不同的数据库系统。

其中一个支持的数据库系统是 SQLite3,一个轻量级的嵌入式数据库。本文将介绍如何使用 SQLAlchemy 创建 SQLite3 数据库。

安装 SQLAlchemy

在开始之前,需要先安装 SQLAlchemy 库。可以使用 pip 命令进行安装:

pip install sqlalchemy
创建数据库

在使用 SQLAlchemy 创建 SQLite3 数据库之前,需要导入 create_engineMetaData 类:

from sqlalchemy import create_engine, MetaData

接下来,创建一个 engine 对象,并指定 SQLite3 数据库的连接字符串:

engine = create_engine('sqlite:///example.db')

这里的 example.db 是 SQLite3 数据库的文件名,也可以是一个绝对路径。

创建 MetaData 对象,用于存储数据库的结构:

metadata = MetaData()
创建表

使用 metadata 对象创建表:

from sqlalchemy import Table, Column, Integer, String

users = Table('users', metadata,
    Column('id', Integer, primary_key=True),
    Column('name', String),
    Column('email', String),
)

这里创建了一个名为 users 的表,包含几个列:idnameemail。其中,id 列是主键。

连接数据库

使用 engine 对象连接数据库,并创建表:

metadata.create_all(engine)

这里调用 create_all 方法,创建所有的 Table 对象。

插入数据

使用 insert 方法插入数据:

conn = engine.connect()

ins = users.insert().values(name='John Doe', email='john.doe@example.com')
conn.execute(ins)

这里插入了一条数据,包含两个字段:nameemail

查询数据

使用 select 方法查询数据:

from sqlalchemy.sql import select

s = select([users])
result = conn.execute(s)

for row in result:
    print(row)

这里查询了 users 表中的所有数据,并输出到控制台。

结论

这篇文章介绍了如何使用 SQLAlchemy 创建 SQLite3 数据库、创建表、插入数据和查询数据。许多数据库系统都支持 SQLAlchemy,如果你想使用其他数据库系统,只需更改连接字符串即可。

完整的示例代码如下:

from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String
from sqlalchemy.sql import select

engine = create_engine('sqlite:///example.db')
metadata = MetaData()

users = Table('users', metadata,
    Column('id', Integer, primary_key=True),
    Column('name', String),
    Column('email', String),
)

metadata.create_all(engine)

conn = engine.connect()

ins = users.insert().values(name='John Doe', email='john.doe@example.com')
conn.execute(ins)

s = select([users])
result = conn.execute(s)

for row in result:
    print(row)