Python 3.8.10
psycopgが必要。
from sqlalchemy import create_engine
from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
db_string = "postgresql://user:password@localhost:5432/testdb"
db = create_engine(db_string)
base = declarative_base()
# ORマッピング
class Hello(base):
__tablename__ = 'hello'
id = Column(Integer, primary_key=True)
msg = Column(String)
Session = sessionmaker(db)
session = Session()
# テーブルが存在しなければ作成。
base.metadata.create_all(db)
# INSERT
data = Hello(msg="Hello World!")
session.add(data)
session.commit()
# SELECT
select = session.query(Hello)
for row in select:
print(row.msg)
# UPDATE
data.msg = "Hello Wolrd! 2"
session.commit()
# SELECT
select = session.query(Hello)
for row in select:
print(row.msg)
# Delete
session.delete(data)
session.commit()
実行結果
python test.py Hello World! Hello Wolrd! 2
作成されたテーブル
testdb=> \d hello;
Table "public.hello"
Column | Type | Collation | Nullable | Default
--------+-------------------+-----------+----------+-----------------------------------
id | integer | | not null | nextval('hello_id_seq'::regclass)
msg | character varying | | |
Indexes:
"hello_pkey" PRIMARY KEY, btree (id)