使用sqlalchemy建表和增删改查
sqlalchemy建表
from connect import Base,session
from sqlalchemy import Column,Integer,String,DateTime,Boolean
from datetime import datetime
class User(Base):
__tablename__='user' #__tablename__定义表名字
id = Column(Integer,primary_key=True,autoincrement=True)
username = Column(String(20),nullable=False)
password = Column(String(50))
createtime = Column(DateTime,default=datetime.now())
_locked = Column(Boolean,default=False,nullable=False)
@classmethod #查询所有的静态类方法
def all(cls):
return session.query(cls).all()
@classmethod #filter_by所有的静态类方法id
def by_id(cls,id):
return session.query(cls).filter_by(id=id).all()
@classmethod #缩写查询的username的方式
def by_name(cls,name):
return session.query(cls).filter_by(username=name).all()
@property
def locked(self):
return self._locked
def __repr__(self):
return "<User(id='%s' ,username='%s',password='%s',createtime='%s',_locked ='%s',)>" % (
self.id ,
self.username,
self.password,
self.createtime,
self._locked
)
#定义原生类型,不定义会返回一个对象
if __name__=='__main__':
Base.metadata.create_all()
sqlalchemy的增删改查
@classmethod #查询所有的静态类方法
def all(cls):
return session.query(cls).all()
@classmethod #filter_by所有的静态类方法id
def by_id(cls,id):
return session.query(cls).filter_by(id=id).all()
@classmethod #缩写查询的username的方式
def by_name(cls,name):
return session.query(cls).filter_by(username=name).all()
@property
def locked(self):
return self._locked
需要session 会话调用
from user_modules import User,session
def add_user():
# person =User(username='dandan',password='abc123')
# session.add(person)
session.add_all(
[
User(username='tobee',password='234qwe'),
User(username='NO1',password='ZZZ123')
]
) #添加多个元素
session.commit()
def search_user():
row = session.query(User).all()
# print(row)
row = session.query(User).filter_by(id=1).all() #filter_by与filter的区别
# print(row)
row = session.query(User).filter(User.username=='NO1')
print(row[0].locked)
def update_user():
row = session.query(User).filter_by(username='dandan').update({User.password:'123asd'})
session.commit()
def delete_user():
row = session.query(User).filter_by(username='NO1')[0]
print(row)
session.delete(row)
session.commit()
if __name__=="__main__":
# add_user()
# search_user()
# update_user()
delete_user()
# print(User.all())
# print(User.by_id(1))
print(User.by_name('NO1'))
# print(dir(row[0]))