>>> *
>>> エンジン = create_engine('sqlite:///./sqlalchemy.db', echo=True)
>>> メタデータ = MetaData(engine)
> ;> > users_table = Table('users', メタデータ, autoload=True)
2014-01-09 10:20:01,580 INFO sqlalchemy.engine.base.Engine PRAGMA table_info("users")
2014-01 -09 10:20:01,581 INFO sqlalchemy.engine.base.Engine ()
2014-01-09 10:20:01,582 INFO sqlalchemy.engine.base.Engine PRAGMA external_key_list("users")
2014- 01-09 10:20:01,583 INFO sqlalchemy.engine.base.Engine ()
2014-01-09 10:20:01,583 INFO sqlalchemy.engine.base.Engine PRAGMA Index_list("users")
2014 -01-09 10:20:01,583 INFO sqlalchemy.engine.base.Engine ()
>>> users_table
Table('users', MetaData(bind=Engine(sqlite:/) //. /sqlalchemy.db)), Column('id', INTEGER(), table=
,primary_key=True, nullable=False), Column('name', VARCHAR(length=40), table =), Column('email', VARCHAR(length=120), table=), schema=None)
>>>
挿入ハンドルをインスタンス化します
コードをコピー
コードは次のとおりです:
>>> i = users_table.insert()
>>> i
>gt;>gt;> print i
INSERT INTO users (id, name, email) VALUES (?, ?, ?)
>>> i.execute(name='rsj217', email='rsj21@gmail.com')
2014-01-09 10:24:02,250 INFO sqlalchemy.engine.base.Engine INSERT INTO users (name, email) VALUES (?, ?)
2014-01-09 10:24:02,250 情報 sqlalchemy.engine.base.Engine ('rsj217', 'rsj21@gmail.com')
2014-01-09 10:24 :02,251 INFO sqlalchemy.engine.base.Engine COMMIT
>>> i.execute({'name': 'ghost'},{'name': 'test'})
2014-01-09 10:24:57,537 INFO sqlalchemy.engine.base.Engine INSERT INTO users (name ) 値 (?)
2014-01-09 10:24:57,537 情報 sqlalchemy.engine.base.Engine (('ghost',), ('test',))
2014-01-09 10 :24:57,537 INFO sqlalchemy.engine.base.Engine COMMIT
>>>
データ库の内容は
です
复制代码代码如下:
sqlite> select * from users;
1|rsj217|rsj21@gmail.com
2|ghost|
3|test|
sqlite>
削除と挿入のような都が必要な先例 sqlalchemy.sql.dml オブジェクト
三は ORM を使用します
orm を使用します、つまり Python クラスとデータ塊のテーブルを映射、免去直接写 SQL 语句
创建映射
复制代代码如下:
>>> class User(object):
... def __repr__(self):
... return '%s(%r, %r)' % (self.__class__.__name__, self.name, self.メール)
...
>>> Mapper(User, users_table) # 创建映射
>>> ul = ユーザー()
>>> ul.name
>>> print ul
User(None, None)
>>> print ul.name
なし
>>>
設立会话
查询
复制代码代码如下:
>>> session = create_session()
>>> session
>>>> query = session.query(User)
>>> query
>>> u = query.filter_by(name='rsj217').first()
2014-01-09 10:44:23,809 INFO sqlalchemy.engine.base.Engine SELECT users.id AS users_id、users.name AS users_name、 users.email AS users_email
FROM users
WHERE users.name = ?
LIMIT ? OFFSET ?
2014-01-09 10:44:23,809 INFO sqlalchemy.engine.base.Engine ('rsj217', 1, 0)
>>> u.name
u'rsj217'
>>>
插入
复制代码代码如下:
>>> sqlalchemy インポートから *
>>> sqlalchemy.orm からインポート *
>>> Engine = create_engine('sqlite:///./sqlalchemy.db')
>>>メタデータ = MetaData(エンジン)
>>> users_table = Table('users', メタデータ, autoload=True)
>>>クラス ユーザー(オブジェクト): pass
...
>>>マッパー(ユーザー, ユーザーテーブル)
<0x18185d0 のマッパー;ユーザー>
>>>セッション = sessionmaker(bind=engine)
>>> session = Session()
>>> u = User()
>>> u.name = 'new'
>>> session.add(u)
>>> session.flush()
>>> session.commit()
>>>
注意: セッションを確立する方法、sqlalchemy のバージョンが異なる sessionmaker の方法よりも優れています
下にあるものを削除し、イヤホン等の高レベルの操作を参照してください。