李成石

导航

 
 1 import logging
 2 from sqlalchemy import Column, String, create_engine
 3 from sqlalchemy.ext.declarative import declarative_base
 4 from sqlalchemy.orm import sessionmaker
 5 
 6 # 创建对象的基类
 7 Base = declarative_base()
 8 
 9 
10 # 创建User对象
11 class User(Base):
12     # 使用InnoDB,UTF-8编码
13     __table_args__ = {
14         'mysql_engine': 'InnoDB',
15         'mysql_charset': 'utf8'
16     }
17     # 表的名字
18     __tablename__ = 'User'
19     # 表结构
20     id = Column(String(20), primary_key=True)
21     name = Column(String(20))
22 
23 
24 def make_connect():
25     # 初始化数据库连接
26     engine = create_engine("mysql+pymysql://root:123@localhost:3306/test", echo=True)
27     # 创建所有Base子类表
28     Base.metadata.create_all(engine)
29     # 创建DBSession类型
30     DBSession = sessionmaker(bind=engine)
31     # 创建session
32     session = DBSession()
33     return session

“mysql+pymysql”使用 MySQL-Pymysql 来连接,“root”和“123”分别是用户名和密码,“localhost”是数据库的域名,“test”是使用的数据库名,“charset”指定了连接时使用的字符集。

添加数据:

1   new_user = User(id='4', name='root')
2     session = make_connect()
3     session.add(new_user)
4     try:
5         session.commit()
6     except BaseException as e:
7         logging.exception(e)
8     finally:
9         session.close()

添加结果:

 删除数据需要先查询数据再删除:

1  session = make_connect()
2     user = session.query(User).filter(User.id == '4').first()
3     session.delete(user)
4     try:
5         session.commit()
6     except BaseException as e:
7         logging.exception(e)
8     finally:
9         session.close()

删除结果:

 

 更新数据(依然先查询数据持久化后修改):

1 session = make_connect()
2     session.query(User).filter(User.id == '4').first().id = '1'
3     try:
4         session.commit()
5     except BaseException as e:
6         logging.exception(e)
7     finally:
8         session.close()

以上将id=4 的数据查询出后id更新为1

posted on 2018-01-31 00:18  李成石  阅读(268)  评论(0编辑  收藏  举报