Python笔记: SQLAlchemy

Reading time ~1 minute

Python笔记: SQLAlchemy

Connecting

1
2
3
4
5
6
7
>>> import sqlalchemy
>>> sqlalchemy.__version__
'1.0.9'
>>> from sqlalchemy import create_engine
>>> engine = create_engine("mysql://root:123456@127.0.0.1:32768/db?charset=utf8", echo=True)
>>> engine
Engine(mysql://root:***@localhost:32768/db)

Define and Create Tables

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
>>> from sqlalchemy import Table, Column, Integer, String, MetaData, ForeignKey
>>> metadata = MetaData()
>>> messages = Table('messages', metadata,
...     Column('id', Integer, primary_key=True),
...     Column('FromUser', String(32)),
...     Column('ToUser', String(32)),
...     Column('content', String(128)),
... )
>>> metadata.create_all(engine)
CREATE TABLE messages (
	id INTEGER NOT NULL AUTO_INCREMENT, 
	`from` VARCHAR(32), 
	`to` VARCHAR(32), 
	content VARCHAR(128), 
	PRIMARY KEY (id)
)

>>> messages.drop(engine)

Insert Expressions

1
2
3
4
5
6
>>> ins = messages.insert()
>>> str(ins)
'INSERT INTO messages (id, "from", "to", content) VALUES (:id, :from, :to, :content)'
>>> ins1 = messages.insert().values(FromUser='fan', ToUser='elain', content='hello')
>>> ins.compile().params 
{'content': 'hello', 'FromUser': 'fan', 'ToUser': 'elain'}

###Executing

1
2
3
4
5
6
7
8
9
10
>>> conn = engine.connect()
>>> result = conn.execute(ins1)
2015-12-08 18:20:06,653 INFO sqlalchemy.engine.base.Engine INSERT INTO messages (`FromUser`, `ToUser`, content) VALUES (%s, %s, %s)
2015-12-08 18:20:06,654 INFO sqlalchemy.engine.base.Engine ('fan', 'elain', 'hello')
2015-12-08 18:20:06,692 INFO sqlalchemy.engine.base.Engine COMMIT

>>>conn.execute(ins, id=2, FromUser='wendy', ToUser='Wendy', content='Williams')
>>>conn.execute(ins, [
...     {'content': 'hehe', 'FromUser': 'yun', 'ToUser': 'ali'}
... 	])

###Table Reflecting

1
2
>>> messages = Table('messages', meta, autoload=True, autoload_with=engine)
>>> customers = Table('customers', meta, autoload=True, autoload_with=engine)

###Selecting

1
2
3
4
5
6
7
8
9
10
11
>>> s = select([messages])
>>> result = conn.execute(s)
2015-12-08 18:51:05,805 INFO sqlalchemy.engine.base.Engine SELECT messages.id, messages.`FromUser`, messages.`ToUser`, messages.content 
FROM messages
2015-12-08 18:51:05,805 INFO sqlalchemy.engine.base.Engine ()
>>> for row in result:
...     print row
... 
(1L, 'fan', 'elain', 'hello')
(2L, 'wendy', 'Wendy', 'Williams')
(4L, 'yun', 'ali', 'hehe')

多表联合查找

1
2
3
4
5
6
>>> s = select([ messages, customers]).where(messages.c.FromUser == customers.c.name)

2015-12-09 15:28:21,900 INFO sqlalchemy.engine.base.Engine SELECT messages.id, messages.`FromUser`, messages.`ToUser`, messages.content, customers.id, customers.name, customers.country, customers.postcode, customers.city, customers.street, customers.mobile, customers.email 
FROM messages, customers 
WHERE messages.`FromUser` = customers.name
2015-12-09 15:28:21,900 INFO sqlalchemy.engine.base.Engine ()

Written with StackEdit.

AZ-204: Practice topic 5

1. inboundOutboundBackend2. C### [Page 25](https://www.examtopics.com/exams/microsoft/az-204/view/25/)25. 26. 27. 28. 29. ### [Page 26](h...… Continue reading

AZ-204: Practice topic 4

Published on February 20, 2022

AZ-204: Practice topic 3

Published on February 07, 2022