如何在 SQLAlchemy 中插入 NULL 值?
在本文中,我们将了解如何使用Python中的 SQLAlchemy 将 NULL 值插入 PostgreSQL 数据库。
首先出于演示目的,让我们使用 SQLAlchemy 创建一个示例表,如下所示
在 PostgreSQL 中使用 SQLAlchmey 创建表:
- 从 SQLAlchemy 包中导入必要的函数。
- 使用 create_engine()函数与 PostgreSQL 数据库建立连接,如下所示
- 创建一个名为 book_publisher 的表,其中包含 publisher_id、publisher_name 和 publisher_estd 列
- 如图所示,使用 insert() 和 values()函数将记录插入表中。
Syntax: engine = create_engine(dialect+driver://username:password@host:port/database_name)
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)
输出:
在 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)
输出: