Easy readable md file for sqlalchemy.py based on kenial/csfbc_sqlalchemy.py
[https://gist.github.com/kenial/db76f51f4d05e6f0bb67]
#! /usr/bin/python
import sqlalchemy as sa
sa.__version__ # '0.9.4' for me
engine = sa.create_engine('postgresql://scott:tiger@localhost/mydatabase')
engine = sa.create_engine('postgresql+psycopg2://scott:tiger@localhost/mydatabase')
engine = sa.create_engine('postgresql+pg8000://scott:tiger@localhost/mydatabase')
engine = sa.create_engine('mysql://scott:tiger@localhost/foo?charset=utf8')
engine = sa.create_engine('mysql+mysqldb://scott:tiger@localhost/?charset=utf8')
engine = sa.create_engine('mysql+pymysql://scott:tiger@localhost/?charset=utf8')
engine = sa.create_engine('mysql+mysqlconnector://scott:tiger@localhost/foo')
engine = sa.create_engine('mysql+oursql://scott:tiger@localhost/foo')
import sqlalchemy as sa
engine = sa.create_engine('sqlite:///sqlite.db', echo=True)
conn = engine.connect()
result = conn.execute("""
CREATE TABLE user (
id INTEGER PRIMARY KEY AUTOINCREMENT,
first_name TEXT,
last_name TEXT,
job TEXT
);
""")
result = conn.execute("""
INSERT INTO user (first_name, last_name, job) values ('Kenial', 'Lee', 'SE');
""")
due to stupid sqlite3_excute API ... it can just run one statement per one call
result = conn.execute("""
INSERT INTO user (first_name, last_name, job) values ('Jon', 'Skeet', 'Author');
""")
result = conn.execute("""
SELECT * FROM user;
""")
print result.rowcount # should be 2, but returns -1. due to stupid sqlite3 API ...
row = result.fetchone()
while row:
print row
row = result.fetchone()
print result.fetchall()
DELETE FROM user;
""")
conn.close()
import sqlalchemy as sa
engine = sa.create_engine('sqlite:///sqlite.db', echo=True)
metadata = sa.MetaData(bind=engine)
users = sa.Table(
'user',
metadata,
sa.Column('id', sa.Integer, primary_key=True, autoincrement=True),
sa.Column('first_name', sa.String),
sa.Column('last_name', sa.String),
sa.Column('job', sa.String),
)
metadata.create_all() # create table - it's safe to run many times
users.insert(values={
"first_name": "Kenial",
"last_name": "Lee",
"job": "SE",
}).execute()
result = users.select().execute()
print result.fetchall()
users.delete(users.c.first_name == "Kenial").execute()
import sqlalchemy as sa
import sqlalchemy.orm as orm
from sqlalchemy.ext.declarative import declarative_base
engine = sa.create_engine('sqlite:///sqlite.db', echo=True)
metadata = sa.MetaData(bind=engine)
db_session = orm.scoped_session(orm.sessionmaker(
autocommit=False,
autoflush=False,
bind=engine
))
class User(object):
id = sa.Column(sa.Integer, primary_key=True)
first_name = sa.Column(sa.String)
last_name = sa.Column(sa.String)
job = sa.Column(sa.String)
#
def __init__(self, first_name=None, last_name=None, job=None):
self.first_name = first_name
self.last_name = last_name
self.job = job
#
def __repr__(self):
return '<User %r>' % (self.name)
#
query = sa.Table(
'user',
metadata,
sa.Column('id', sa.Integer, primary_key=True, autoincrement=True),
sa.Column('first_name', sa.String),
sa.Column('last_name', sa.String),
sa.Column('job', sa.String),
)
def init_db():
metadata.create_all(bind=engine)
init_db()
orm.mapper(User, User.query)
u = User("Kenial", "Lee", "SE")
db_session.add(User("Kenial", "Lee", "SE"))
db_session.add_all([
User("Kenial", "Lee", "SE"),
User("Jon", "Skeet", "Author"),
])
db_session.commit()
result = User.query.select(User.id == 1).execute()
print result.fetchall()
result = User.query.delete(User.id == 1).execute()
from sqlalchemy.ext.automap import automap_base
from sqlalchemy.orm import Session
from sqlalchemy import create_engine
from sqlalchemy.orm.query import Query
from sqlalchemy import desc
from sqlalchemy import text
engine = create_engine('mysql+pymysql://scott:tiger@localhost/dbname?charset=utf8')
Base = automap_base()
Base.prepare(engine, reflect=True)
SomeObj = Base.classes.some_table
session = Session(engine)
some_obj_list = session.query(SomeObj)[:10]
some_obj_list = session.query(SomeObj.column_name).order_by(desc(SomeObj.id))[:10]
session.query(SomeObj).filter(SomeObj.id.in_([10, 20]))
session.query(SomeObj.id).filter_by(id=15)
session.add(SomeObj(id=15, foreign_obj=ForeignObj(name="foo")))
session.commit()
session.add_all([
])
some_obj = some_obj_list[0]
print (u1.foreign_obj_collection)