PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

sqlalchemy में संघर्ष पर Postgresql

Postgres 9.6.1, sqlachemy 1.1.4, और psycopg2 2.6.2 का उपयोग करना:

  1. अपनी डेटा संरचना को एक शब्दकोश में बदलें। पंडों से यह है

    import pandas
    from sqlalchemy import MetaData
    from sqlalchemy.dialects.postgresql import insert
    import psycopg2
    
    # The dictionary should include all the values including index values
    insrt_vals = df.to_dict(orient='records')
    
  2. sqlalchemy के माध्यम से डेटाबेस से कनेक्ट करें। इसके बजाय नीचे psycog2 ड्राइवर और देशी COPY फ़ंक्शन आज़माएं, जो सभी पोस्टग्रेज़ इंडेक्सिंग को बायपास करता है।

    csv_data = os.path.realpath('test.csv')
    con = psycopg2.connect(database = 'db01', user = 'postgres')
    cur = con.cursor()
    cur.execute("\copy stamm_data from '%s' DELIMITER ';' csv header" % csv_data)
    con.commit()
    
  3. निष्पादित करें

    results = engine.execute(do_nothing_stmt)
    # Get number of rows inserted
    rowcount = results.rowcount
    

चेतावनी:

यह तरीका NaT . के साथ काम नहीं करता है बॉक्स से बाहर है।

सब कुछ एक साथ

tst_df = pd.DataFrame({'colA':['a','b','c','a','z', 'q'],
              'colB': pd.date_range(end=datetime.datetime.now() , periods=6),
              'colC' : ['a1','b2','c3','a4','z5', 'q6']})


insrt_vals = tst_df.to_dict(orient='records')
engine =      sqlalchemy.create_engine("postgresql://user:[email protected]/postgres")
connect = engine.connect()
meta = MetaData(bind=engine)
meta.reflect(bind=engine)
table = meta.tables['tstbl']
insrt_stmnt = insert(table).values(insrt_vals)

do_nothing_stmt  = insrt_stmnt.on_conflict_do_nothing(index_elements=['colA','colB'])
results = engine.execute(do_nothing_stmt)

चरण 2 और 3 के बजाय psycog2 . का उपयोग करके पोस्टग्रेज में कॉपी कमांड वाला ड्राइवर बड़ी फाइलों (गिग के करीब) के लिए तेज होता है क्योंकि यह सभी टेबल इंडेक्सिंग को बंद कर देता है।

csv_data = os.path.realpath('test.csv')


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. JDBC में जावा प्रकार ltree पोस्ट करने के लिए

  2. sqlalchemy.exc.NoSuchModuleError:प्लगइन लोड नहीं कर सकता:sqlalchemy.dialects:postgres

  3. PostgreSQL डेटाबेस के साथ वेब ऐप में पूर्ण ऑफ़लाइन कार्यक्षमता कैसे प्राप्त करें?

  4. मैक ओएस सिएरा पर Virtualenv का उपयोग करके PyGreSQL कैसे स्थापित करें?

  5. PostgreSQL 9.0 . में विभाजन तालिका का आकार