将日期和时间戳格式的数据插入PostgreSQL

0 投票
1 回答
1233 浏览
提问于 2025-04-18 14:33

我有几个和天气相关的字段,比如 date_of_data_collection(数据收集日期)、time(时间)、temperature(温度)和 relative humidity(相对湿度)。我需要把这些字段的值插入到 PostgreSQL 数据库里。此外,我想用 date(日期)和 timestamp(时间戳)格式来存储 date_of_data_collectiontime。这个表已经创建好了,但我最关心的是如何插入数据。我该如何在 Python 中完成这个任务呢?

1 个回答

3

从Python连接数据库有两种方法:

  1. 使用像SQLAlchemy这样的ORM工具
  2. 使用像psycopg2这样的数据库驱动/适配器

这两者是完全不同的东西:

  • SQLAlchemy生成 SQL语句,
  • 而psycopg2则是直接把SQL语句发送到数据库。

注意:SQLAlchemy需要依赖psycopg2或其他数据库驱动来和数据库进行沟通。

使用ORM可以加快你的开发速度,你可以用更符合Python风格的方式来生成SQL语句。例如,

from sqlalchemy import create_engine
dbengine = create_engine('postgresql://user@localhost:5432/db')

# Lets create a table with 2 columns
users = Table('users', metadata,
          Column('name', String(40), primary_key=True)
          Column('age', Integer)
        )
users.create()

# And insert some data
u = users.insert()
u.execute (
          {'name': 'John', 'age': 24},
          {'date': 'Doe', 'age': 42},
)

小贴士:我更喜欢使用ORM,而SQLAlchemy是一个很棒的库。

(而且,它可以让你不用写SQL语句)

使用数据库驱动- psycopg2,你可以在这里了解更多信息。

import psycopg2
DATABASE = psycopg2.connect("dbname='database_name' user='dbuser' host='localhost' password='dbpass'")

# Next step is to define a cursor to work with.
db = DATABASE.cursor()
# Now we can write our SQL statements
db.execute("""SELECT * from table_name""")

# create a table
db.execute('''CREATE TABLE users
          (NAME    TEXT    NOT NULL,
           AGE     INT     NOT NULL,
          );'''
)

# And insert some data
db.execute("INSERT INTO users (NAME,AGE) VALUES ('John', 24)");
db.execute("INSERT INTO users (NAME,AGE) VALUES ('Doe', 42)");

# close communication with database
db.commit()
db.close()

撰写回答