使用Date和TimeStamp格式将数据插入PostgreSQL

时间:2014-07-24 03:59:55

标签: python postgresql

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

1 个答案:

答案 0 :(得分:3)

有两种方法可以从python连接数据库:

  1. SQLAlchemy
  2. 这样的ORM
  3. 数据库驱动程序/适配器,如psycopg2
  4. 这是完全不同的两件事:

    • SQLAlchemy 生成 SQL语句,
    • psycopg2直接将SQL语句发送到数据库。

    注意:SQLAlchemy依赖于psycopg2或其他数据库驱动程序与数据库进行通信。

    使用ORM 将提高您的开发速度,您可以通过以pythonic方式编写来生成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()