1、安装 pip install SQLAlchemy
2 、SQLAlchemy的使用
2.1 创建连接
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
engine=create_engine('mysql://test@localhost:3306/test')
session=sessionmaker(engine)
create_engine时添加相关参数:
连接池:
pool_size 连接数
max_overflow 最多多几个连接
pool_recycle 连接重置周期
pool_timeout 连接超时时间
其他:
endcoding 编码 UTF8
echo False Ture 设置为Ture 显示每条sql
2.2 模型定义
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class User(Base):
__tablename__ = 'user'
id = Column(Integer, primary_key=True)
account = Column(CHAR(30), unique=True, default='')
role = Column(CHAR(10), default='')
realname = Column(CHAR(30), default='')
join = Column(DATE, default='0000-00-00')
last = Column(Integer, default=0)
feedback = Column(Enum('0', '1'), default='0')
deleted = Column(Enum('0', '1'), default='0')
2.3 创建删除表
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
#创建表
Base.metadata.create_all(Engine)
#删除表
Base.metadata.drop_all(Engine)
2.4 db 操作
查询
结果类型:instance、instance of list、keyed tuple of list、value of list
session.query(User).filter_by(account='abc').all() session.query(User).filter(User.account=='abc').all() session.query(User).filter(User.join<=func.current_timestamp()).all() session.query(User).first() session.query(User).filter(User.join<=func.current_timestamp()&User.account=='A').first() session.query(User.id).order_by('id').all() session.query(User.id).order_by('id').first()
from sqlalchemy import func #可以通过func使用函数
from sqlalchemy import or_, not_,and_ #条件查询
备注:filter 时使用 == filter_by 时使用=
更新
session.query(User).filter(User.account=='abc').update({'account':'123'}) session.commit() account=session.query(User).filter_by(account='abc').scalar() user.account='heheh' session.commit()
新增
session.add(User(id=1, account='cf', role='qa', realname='caifeng', join='2016-01-01 00:00:00', last='2016-01-01 00:00:00',feedback=0, deleted=0))
session.add_all([User(id=2, account='test2', role='qa', realname='test2', join='2016-01-01 00:00:00', last='2016-01-01 00:00:00',feedback=0, deleted=0),User(id=3, account='test3', role='qa', realname='test3', join='2016-01-01 00:00:00', last='2016-01-01 00:00:00',feedback=0, deleted=0)])
删除
session.query(User).filter_by(account='abc').delete()
3 基本类型 (D:\Python27\Lib\site-packages\sqlalchemy\sql\sqltype.py)
Integer/BigInteger/SmallInteger 整形.
Boolean 布尔类型.
Date/DateTime/Time(timezone=False)日期类型
Interval时间偏差类型.
Enum(*enums, **kw)枚举类型,
Float浮点小数.
Numeric(precision=None, scale=None, decimal_return_scale=None, ...)定点小数
LargeBinary(length=None)字节数据.
PickleTypePython 对象的序列化类型.
String(length=None, collation=None, ...)字符串类型,
Unicode类似与字符串类型, 在某些数据库实现下, 会明确表示支持非 ASCII 字符. 同时输入输出也强制是
Text长文本类型, Python 表现为Unicode, 数据库表现为TEXT.
UnicodeText参考Unicode.