SQLAlchemy
一、sqlalchemy SQLAlchemy是python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用该关系对象映射进行数据库操作,简言之便是:将对象转换成SQL,然后使用数据API执行SQL并获取执行结果。 ?Dialect用于和数据API进行交流,根据配置文件的不同调用不同的数据库API,从而实现对数据库的操作,如: MySQL-+mysqldb://
mysql+pymysql:// MySQL mysql+mysqlconnector:// cx_Oracle 使用 Schema Type/SQL Expression Language/Engine/ConnectionPooling/Dialect 进行数据库操作。Engine使用Schema Type创建一个特定的结构对象,之后通过SQL Expression Language将该对象转换成SQL语句,然后通过?ConnectionPooling 连接数据库,再然后通过?Dialect 执行SQL,并获取结果。 创建表 sqlalchemy.ext.declarative sqlalchemy sqlalchemy.orm sqlalchemy engine=create_engine(<span style="color: #800000">"<span style="color: #800000">mysql+pymysql://root:123456@127.0.0.1:3306/db1?charset=utf8<span style="color: #800000">",max_overflow=5<span style="color: #000000">)
Base = declarative_base() <span style="color: #008000">#<span style="color: #008000"> 生成orm基类 <span style="color: #008000"># <span style="color: #008000"> 创建单表<span style="color: #0000ff">class<span style="color: #000000"> User(Base): <span style="color: #800080">tablename = <span style="color: #800000">'<span style="color: #800000">users<span style="color: #800000">' <span style="color: #008000">#<span style="color: #008000"> 表名 id = Column(Integer,primary_key=True,autoincrement=True) <span style="color: #008000">#<span style="color: #008000"> 主键自增 name = Column(String(50),index=True,nullable=True) <span style="color: #008000">#<span style="color: #008000"> 创建索引并不能为空 extra = Column(String(50<span style="color: #000000">))
<span style="color: #000000"> ) <span style="color: #008000">#<span style="color: #008000"> 一对多 <span style="color: #0000ff">class<span style="color: #000000"> Dress(Base): <span style="color: #008000">#<span style="color: #008000"> 多对多 <span style="color: #0000ff">class<span style="color: #000000"> Server(Base): <span style="color: #0000ff">class<span style="color: #000000"> ServerToGroup(Base): <span style="color: #0000ff">def<span style="color: #000000"> init_db(): init_db() Foreignkey的2种写法的区别: 使用第一种方法要注意顺序,第二种不用。 user_type_id = Column(Integer,ForeignKey(UserType.user_type_id))
user_type_id = Column(Integer,ForeignKey())
也可以在类下面加上这个方法: 目的是在我们查询的时候,都显示的是方法,如果把该方法加入到相关类下面,返回的就是数据了 = % tmp
删除表 二、最基本的增删改查 <span style="color: #008000"># <span style="color: #008000"> session.add_all([<span style="color: #008000"> <span style="color: #008000"> Users(name='小egon'),<span style="color: #008000"> <span style="color: #008000"> Users(name='eric')<span style="color: #008000"> <span style="color: #008000"> ])<span style="color: #008000"><span style="color: #008000"> session.commit()<span style="color: #008000">#<span style="color: #008000"> 2. 查<span style="color: #008000"> <span style="color: #008000"> result = session.query(Users).all()<span style="color: #008000"><span style="color: #008000"> for row in result:<span style="color: #008000"><span style="color: #008000"> print(row.id,row.name)<span style="color: #008000">#<span style="color: #008000"> result = session.query(Users).filter(Users.id >= 2)<span style="color: #008000"> <span style="color: #008000"> for row in result:<span style="color: #008000"><span style="color: #008000"> print(row.id,row.name)<span style="color: #008000">#<span style="color: #008000"> result = session.query(Users).filter(Users.id >= 2).first()<span style="color: #008000"> <span style="color: #008000"> print(result)<span style="color: #008000">#<span style="color: #008000"> 3.删<span style="color: #008000"> <span style="color: #008000"> session.query(Users).filter(Users.id >= 2).delete()<span style="color: #008000"><span style="color: #008000"> session.commit()<span style="color: #008000">#<span style="color: #008000"> 4.改<span style="color: #008000"> <span style="color: #008000"> session.query(Users).filter(Users.id == 4).update({Users.name:'egon'})<span style="color: #008000"><span style="color: #008000"> session.query(Users).filter(Users.id == 4).update({'name':'小egon'})<span style="color: #008000"><span style="color: #008000"> session.query(Users).filter(Users.id == 4).update({'name':Users.name+"dsb"},synchronize_session=False)<span style="color: #008000"><span style="color: #008000"> session.commit()(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |