环境准备:
①pip install SQLAlchemy
②pip install mysqlclient
基本操作代码如下:
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String, DateTime, Boolean
from sqlalchemy.orm import sessionmaker
engine = create_engine('mysql://用户名:密码@localhost:3306/news_test?charset=utf8')
Base = declarative_base()
Session = sessionmaker(bind=engine)
class News(Base):
__tablename__ = 'news'
id = Column(Integer, primary_key=True)
title = Column(String(200), nullable=False)
content = Column(String(2000), nullable=False)
types = Column(String(10), nullable=False)
image = Column(String(300), )
author = Column(String(20), )
view_count = Column(Integer)
create_time = Column(DateTime)
is_delete = Column(Boolean)
# News.metadata.create_all(engine): 创建一张表
class OrmTest(object):
def __init__(self):
self.session = Session()
def add_one(self): # 添加记录
new_obj1 = News(
title='标题',
content='内容',
types='类型',
is_delete=False,
)
new_obj2 = News(
title='标题',
content='内容',
types='类型',
is_delete=True,
)
self.session.add(new_obj1)
self.session.add(new_obj2)
# self.session.add_all([new_obj1, new_obj2]): 添加多个
self.session.commit()
return new_obj1, new_obj2
def get_one(self): # 查询一条数据,若不存在则会报错
return self.session.query(News).get(1)
def get_more(self): # 查询多条数据
return self.session.query(News).filter_by(is_delete=False)
def update_data(self, pk): # 修改数据,修改多条用for循环即可
new_obj = self.session.query(News).get(pk)
if new_obj:
new_obj.is_delete = False
self.session.add(new_obj)
self.session.commit()
return True
return False
def delete_data(self, pk):
new_obj = self.session.query(News).get(pk)
self.session.delete(new_obj)
self.session.commit()
return '删除成功!'
if __name__ == '__main__':
test = OrmTest()
# a, b = test.add_one()
# print(a.id)
# print(b.id)
# result1 = test.get_one()
# print(result1)
# result2 = test.get_more()
# print(result2.count())
# 只要是改动了数据库中的数据,就一定要session.commit()
# result = test.update_data(1)
# print(result)
result = test.delete_data(1)
print(result)