信仰比理智更有才华
创建表格| 插入记录| 查询
from sqlalchemy import create_engine
from sqlalchemy import MetaData, Column, Table, ForeignKey
from sqlalchemy import Integer, String
engine = create_engine('sqlite:///tutorial.db', echo=True)
metadata = MetaData(bind=engine)
'''使用metadata作为基本连接,我们可以创建表格'''
users = Table('users', metadata,
Column('user_id', Integer, primary_key=True),
Column('name', String(40)),
Column('age', Integer),
Column('password', String),
)
users.create()
'''插入记录是通过表格对象的insert()方法实现的,这将会定义一个子句对象(clause object)(就是CluseElement)来代理INSERT语句:'''
i = users.insert()
'''当我们创建这个插入语句对象时,语句本身也绑定到了Engine,并已经可以执行了。
子句对象的execute()方法将会将对象编译为特定引擎的SQL方言,并且执行语句:'''
i.execute(name='Mary', age=50, password='secret')
i.execute({'name': 'John', 'age': 42},
{'name': 'Susan', 'age':57},
{'name': 'Carl', 'age': 33})
s = users.select()
'''这时,我们并没有忽略execute()的返回值。他是一个ResultProxy实例,保存了结果,而行为非常类似于DBAPI中的cursor对象:'''
rs = s.execute()
row = rs.fetchone()
print('Id:', row[0])
print('Name:', row['name'])
print('Age:', row.age)
print('Password:', row[users.c.password])
'''查询条件同Python表达式,使用Column对象。所有表达式中的Column对象都是ClauseElements的实例,例如Select、Insert和Table对象本身:'''
r=users.select(users.c.user_name=='John').execute()
print(r.fetchone())
for row in rs:
print(row.name, 'is', row.age, 'years old')
结果如图:
![这里写图片描述](https://img-blog.csdn.net/20160924111229818)
![这里写图片描述](https://img-blog.csdn.net/20160924111247615)