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

标签 python postgresql

我有几个与天气相关的字段,例如 date_of_data_collectiontimetemperaturerelative humidity。我必须将这些字段的值插入到 PostgreSQL 中。另外,我想使用 datetimestamp 格式来存储 date_of_data_collectiontime。该表已创建。然而,插入是主要问题。如何在 Python 中完成我的任务?

最佳答案

有两种方法可以从 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 您可以阅读更多相关信息 here

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()

关于python - 将日期和时间戳格式的数据插入 PostgreSQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24924893/

相关文章:

ruby-on-rails - Rails Postgres 时区处理

sql - 仅选择表中每个标识符的最新值

Python:使用 ctypes 访问 DLL 函数——按函数 *name* 访问失败

python - 谷歌应用引擎/python : Can I depend on Task queue retry on failure to keep insertions to a minimum?

python - 尝试在 Mac OSX 上安装 wxpython

python - PySide/PyQT5 : How to emit signals from a QGraphicsItem?

sql - TypeORM 限制不起作用,无论设置多少限制,查询都会返回数组中的一个元素?

python - 如何根据不在索引中的日期对 Pandas 时间序列进行切片?

postgresql - 在 PostgreSQL 中创建只插入表

c - 使用 C 扩展在 Postgres DB 中存储带有时区的时间戳?