python SQLAlchemy

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.




python SQLAlchemy_第1张图片
扫一扫,关注TestDev

你可能感兴趣的:(python SQLAlchemy)