SQLAlchemy学习笔记
来源:互联网 发布:vip会员管理系统php 编辑:程序博客网 时间:2024/06/06 05:35
1. sqlalchemy.__version__ 获取版本号
2. create_engine 用来创建一个数据库连接,其参数分别为’类型://root/password/地址.此方法返回的一个Engine实例,此时不会主动连接数据库,而回在执行命令的时候去尝试连接。如engine1.execute()或者engine1.connect().
3. 创建一个声明基类,用来定义与数据库表相对应的类。
4. from sqlalchemy.ext.declarative import declarative_basebase1 = declarative_base()
5. 使用declarative定义类至少要一个tablename参数,一个Column参数(主键)。
from sqlalchemy import Column, Integer, String
class User(base1):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
fullname = Column(String)
password = Column(String)
def __repr__(self):
return "<User(name='%s', fullname='%s',password='%s')>"%(self.name,self.fullname, self.password)
6. User.__table__此方法可以查看这个User表对象
7. Base.metadata.create_all(engine),执行命令
8. SQLite和Postgresql允许不指定长度,其他数据库则需要给定长度。如Column(String(50))
9. Oracle和Firebird可以使用Sequence来指定一个主键
from sqlalchemy import SequenceColumn(Integer, Sequence('user_id_seq'), primary_key=True)
10. ORM的数据库处理方式通过Session实现,当我们create_engine()的时候,我们同时应该创建一个Session
from sqlalchemy.orm import sessionmakerSession = sessionmaker(bind=engine1)
如果你在使用sessionmaker()的时候,没有一个engine对象,那么你可以先使用
Session = sessionaker()方法,当你创建一个engine的时候,然后使用configure来进行连接
Session.configure(bind=enginee)#once enginee is available
上面的Session没有与数据库链接,当第一次调用的时候才会建立一个与Engine维护的连接池连接,已知到我们关闭Session对象或者提交完所有的变化。
11. 存操作我们使用add()到会话中,比如
session1 = Session()ed_user = User(name='ed', fullname='Ed Jones', password='edpassword')session1.add(ed_user)
此时此语句没有被执行,同时数据库也没有这行数据,Session会再需要的时候尽快持久化,这个过程叫flush。当我们在数据库查询Ed Jones,这个待定的信息会被flush,然后然查询请求被执行。
12. 可以使用add_all()函数来一次添加多个对象
session1.add_all([User(name='wendy', fullname='Wendy Williams', password='foobar'), User(name='mary', fullname='Mary Contrary', password='xxg527'), User(name='fred', fullname='Fred Flinstone', password='blah')])
ed_user.password= ‘f8s7ccs’,会话时刻注意这些变化
session.dirty(ps.可以找到现在要做的修改,个人理解)
session.new(ps.可以找到新的任务,个人理解)
13. session.commit()可以将所有的更改记录到数据库中,然后提交这个事务。Commit()函数
14. rolling back()函数,可以在一个会话事务里面起作用,比如
ed_user.name = ‘Edwardo
fake_user= User(name='fakeuser', fullname='Invalid', password='12345') >>>session.add(fake_user)
此时这些已经放到当前的事务中,包括name的修改,以及添加新的用户,我们session.roolback()一下,则将name改回去,新用户删掉(ps.不确定会回改多少)
15. 查询(Quering)通过Session里面的query()方法创建的
for instance insession.query(User).order_by(User.id):
print(instance.name,instance.fullname)
Query也可以接受类实体、基于列的实体作为query()的参数如
Forname, fullname in session.query(User.name, User.fullname):
Print(name,fullname)
16. lable()给一列起一个另外的称呼,起别名
for row in session.query(User.name.label(‘name_label’)).all():
print(row.name_label)#输出的是User.name
- sqlalchemy学习笔记
- Flask-SQLALchemy学习笔记
- SQLAlchemy 学习笔记
- SQLAlchemy 学习笔记
- SqlAlchemy个人学习笔记
- SQLAlchemy学习笔记
- SQLAlchemy学习笔记
- sqlalchemy学习笔记
- python学习笔记(十五) - ORM框架(SQLAlchemy)
- SqlAlchemy个人学习笔记完整汇总
- SQLalchemy relationship之lazy属性 学习笔记
- SQLAlchemy core 学习笔记(1) medata
- sqlalchemy 笔记
- SqlAlchemy学习
- SQLAlchemy学习
- Python数据库ORM SQLAlchemy 0.7学习笔记(1) 概要
- Python数据库ORM SQLAlchemy 0.7学习笔记(2) 定义映射
- Python数据库ORM SQLAlchemy 0.7学习笔记(3) 会话
- 差分进化算法
- 【C#】批量修改文件名
- python笔记-004-列表操作和元组(下)
- markdown-flow
- Linux下的split 命令(将一个大文件根据行数平均分成若干个小文件)
- SQLAlchemy学习笔记
- 连接Oracle数据库,出现The Network Adapter could not establish the connection
- java.io.FileNotFoundException: Could not open ServletContext resource [/SpringContext.xml]
- 1小时学会Shell基础
- android 解决在列表条目中刷新或者加载 Glide 圆形头像会闪烁,位置错乱
- POJ 1321 棋盘问题(DFS)
- Laravel 响应
- 【神经网络与深度学习】读书笔记
- 一站式学习Wireshark(五):TCP窗口与拥塞处理