📜  如何在 SQLAlchemy 中插入 NULL 值?

📅  最后修改于: 2022-05-13 01:55:25.202000             🧑  作者: Mango

如何在 SQLAlchemy 中插入 NULL 值?

在本文中,我们将了解如何使用Python中的 SQLAlchemy 将 NULL 值插入 PostgreSQL 数据库。

首先出于演示目的,让我们使用 SQLAlchemy 创建一个示例表,如下所示

在 PostgreSQL 中使用 SQLAlchmey 创建表:

  • 从 SQLAlchemy 包中导入必要的函数。
  • 使用 create_engine()函数与 PostgreSQL 数据库建立连接,如下所示
  • 创建一个名为 book_publisher 的表,其中包含 publisher_id、publisher_name 和 publisher_estd 列
  • 如图所示,使用 insert() 和 values()函数将记录插入表中。
Python3
# import necessary packages
from sqlalchemy import create_engine,/
MetaData, Table, Column, Integer, String
 
# establish connection
engine = create_engine(
    "database+dialect://username:password@hostname:port/database_name")
 
# store engine objects
meta = MetaData()
 
# create a table
book_publisher = Table(
    'book_publisher', meta,
    Column('publisherId', Integer, primary_key=True),
    Column('publisherName', String),
    Column('publisherEstd', Integer),
)
 
# use create_all() function to create a
# table using objects stored in meta.
meta.create_all(engine)
 
# insert values
statement1 = book_publisher.insert().values(
    publisherId=1, publisherName="Oxford", publisherEstd=1900)
statement2 = book_publisher.insert().values(
    publisherId=2, publisherName='Stanford', publisherEstd=1910)
statement3 = book_publisher.insert().values(
    publisherId=3, publisherName="MIT", publisherEstd=1920)
statement4 = book_publisher.insert().values(
    publisherId=4, publisherName="Springer", publisherEstd=1930)
statement5 = book_publisher.insert().values(
    publisherId=5, publisherName="Packt", publisherEstd=1940)
 
engine.execute(statement1)
engine.execute(statement2)
engine.execute(statement3)
engine.execute(statement4)
engine.execute(statement5)


Python3
# specify null values as NONE
statement6 = book_publisher.insert().values(
    publisherId=6, publisherName=None, publisherEstd=None)
 
# insert the null values
engine.execute(statement6)


Python3
# Get the `book_publisher` table from the
# Metadata object
import sqlalchemy
 
book_publisher = meta.tables['book_publisher']
 
# SQLAlchemy Query to fetch all records
query = sqlalchemy.select([
    book_publisher])
 
 
# Fetch all the records
result = engine.execute(query).fetchall()
 
# View the records
for record in result:
    print("\n", record)


输出:

使用 SQLAlchemy 的示例表

在 PostgreSQL 中使用 SQLAlchemy 插入 NULL 值

让我们使用相同的 insert() 和 values()函数来插入 NULL 值。在Python中,NULL 等效项是 None。因此,为您希望插入为 NULL 值的记录指定无,如下所示。

Python3

# specify null values as NONE
statement6 = book_publisher.insert().values(
    publisherId=6, publisherName=None, publisherEstd=None)
 
# insert the null values
engine.execute(statement6)

输出:

您可以看到插入到第 6 行的新记录。

没有值被插入到表中

使用Python shell 获取上述结果

在这里,我们将使用 fetchall() 方法获取结果。

Python3

# Get the `book_publisher` table from the
# Metadata object
import sqlalchemy
 
book_publisher = meta.tables['book_publisher']
 
# SQLAlchemy Query to fetch all records
query = sqlalchemy.select([
    book_publisher])
 
 
# Fetch all the records
result = engine.execute(query).fetchall()
 
# View the records
for record in result:
    print("\n", record)

输出:

具有 None 值的记录的输出