date bind word creat 删除数据 sta pri 自动
ORM 技术:Object-Relational Mapping,负责把关系数据库的表结构映射到对象上。
1. 安装 SQLAlchemy 模块
- pip install sqlalchemy
2. 初始化连接
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- from sqlalchemy import Column, create_engine
- from sqlalchemy.types import *
- from sqlalchemy.orm import sessionmaker
- from sqlalchemy.ext.declarative import declarative_base
- # 连接数据库
- sql_connect = 'mysql://user:[email protected]:port/database'
- engine = create_engine(sql_connect)
- # 创建DBSession类型:
- DBSession = sessionmaker(bind=engine)
注:红色部分:数据库类型:// 用户名:[email protected]: 端口号 / 数据库名.
完整的则为:数据库类型 + 数据库驱动:// 用户名:[email protected]: 端口号 / 数据库名
- 3.自动建表
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- from sqlalchemy import Column
- from sqlalchemy.types import *
- from sqlalchemy.ext.declarative import declarative_base
- from sqlalchemy import create_engine
- from sqlalchemy.orm import sessionmaker
- # 连接数据库
- sql_connect = 'mysql://ruser:[email protected]:port/datbase'
- engine = create_engine(sql_connect)
- DBSession = sessionmaker(bind=engine)
- # 创建对象的基类:
- BaseModel = declarative_base()
- #定义对象
- class User(BaseModel):
- # 表名
- __tablename__ = 'user'
- # 表结构
- id = Column(String(20), primary_key=True)
- name = Column(String(20))
- age = Column(Integer)
- #初始化数据库
- def init_db():
- BaseModel.metadata.create_all(engine)
- #删除所有数据表
- def drop_db():
- BaseModel.metadata.drop_all(engine)
4. 添加数据
- # 创建session对象,相当于MySQLdb里面的游标
- session = DBSession()
- # 创建新User对象:
- new_user = User(id='2', name='John', age=13)
- # 添加到session:
- session.add(new_user)
- # 提交即保存到数据库
- session.commit()
- # 关闭session
- session.close()
5. 查询数据
在查询语句中的 where 子句用 filter() 替代,不过匹配的值需要用"==";如果使用 filter_by(),则使用 "=" 即可。
查询一条:
- # 创建Session:
- session = DBSession()
- # 创建Query查询,filter是where条件,最后调用one()返回唯一行,如果调用all()则返回所有行:
- user = session.query(User).filter(User.name == 'John', User.age > 12).one()
- # 打印类型和对象的name属性:
- print 'type:', type(user)
- print 'age:', user.age
- # 关闭Session:
- session.close()
查询多条:
- # 创建Session:
- session = DBSession()
- # 创建Query查询,filter是where条件,最后调用one()返回唯一行,如果调用all()则返回所有行:
- users = session.query(User).filter(User.name == 'John').all()
- # 打印类型和对象的name属性:
- print 'type:', type(users)
- for u in users:
- print u.id
- # 关闭Session:
- session.close()
6. 更新数据
方式一:
- # 创建Session:
- session = DBSession()
- # 可以进行多条数据更新
- user = session.query(User).filter(User.id == '5')
- user.update({User.age: 14})
- # 提交数据
- session.commit()
- # 关闭Session
- session.close()
方式二:
- # 创建Session:
- session = DBSession()
- # 可以进行多条数据更新
- user = session.query(User).filter_by(id='5').one()
- user.age = 16
- # 提交数据
- session.commit()
- # 关闭Session
- session.close()
7. 删除数据
- # 创建Session
- session = DBSession()
- # 删除哪些数据
- user = session.query(User).filter(User.id == '6').one()
- session.delete(user)
- # 提交数据
- session.commit()
- # 关闭session
- session.close()
python 使用 SQLAlchemy 模块连接 MySQL
来源: http://www.bubuko.com/infodetail-2262662.html