将日期和时间戳格式的数据插入PostgreSQL
我有几个和天气相关的字段,比如 date_of_data_collection
(数据收集日期)、time
(时间)、temperature
(温度)和 relative humidity
(相对湿度)。我需要把这些字段的值插入到 PostgreSQL
数据库里。此外,我想用 date
(日期)和 timestamp
(时间戳)格式来存储 date_of_data_collection
和 time
。这个表已经创建好了,但我最关心的是如何插入数据。我该如何在 Python
中完成这个任务呢?
1 个回答
3
从Python连接数据库有两种方法:
- 使用像SQLAlchemy这样的ORM工具
- 使用像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()