tornado框架SQLAlchemy的操作
来源:互联网 发布:宁波傲强自动编程软件 编辑:程序博客网 时间:2024/06/12 07:28
SQLAlchemy连接数据库
在用到python的一些框架里,需要进行前后端数据交互,其中数据库的连接是必不可少的,之前自己使用SQLAlchemy在进行数据库连接时遇到了很多问题,以及一些流程不是很清楚。所以花了点时间进行了一下流程梳理。
1.首先建立一个空py文件(这里命名为connect.py),导入包:
from sqlalchemy import create_engine
接下来设定连接数据库(以MySQL为例)所需要的信息,包括用户名、密码、端口号、IP以及要使用的数据库名字等信息,例如:
HOSTNAME = '127.0.0.1'PORT = '3306'DATABASE = 'mydb'USERNAME = 'root'PASSWORD = '123456'
然后设置一个字符串的格式:
db_url='mysql+pymysql://{}:{}@{}/{}?charset=utf8'.format( USERNAME, PASSWORD, HOSTNAME, DATABASE)
创建一个引擎:
engine = create_engine(db_url)
将引擎作为参数导入declarative_base()方法,返回一个类:
from sqlalchemy.ext.declarative import declarative_baseBase = declarative_base(engine)
同时需要创建一个会话窗,即映射:
from sqlalchemy.orm import sessionmakerSession = sessionmaker(engine)session = Session()
验证是否成功可以在尾端进行如下操作:
if __name__=='__main__': print(dir(Base)) print(dir(session))
2.新建一个py文件(这里命名为user_modules.py),用来创建一个user表单。
首先从SQLAlchemy导入创建数据库记录的格式,同时将上个connect.py文件里创建的Base和session导入进来,下面也需要用到datetime的模块,将其也导入进来:
from datetime import datetimefrom connect import Base,sessionfrom sqlalchemy import Column,Integer,String,DateTime,Boolean
然后定义一个User类,继承Base:
class User(Base): __tablename__ = 'user' #表格名字 id = Column(Integer,primary_key=True,autoincrement=True) username = Column(String(20),nullable=False) password = Column(String(50)) creatime = Column(DateTime,default=datetime.now) _locked = Column(Boolean,default=False,nullable=False) # 自己封装查询方法 @classmethod def get_all(cls): return session.query(cls).all() @classmethod def get_id(cls,id): return session.query(cls).filter_by(id=id).all() @classmethod def get_username(cls,username): return session.query(cls).filter_by(username=username).all() @property def locked(self): return self._locked def __repr__(self): return "<User(id='%s',username='%s',password='%s',creatime='%s',_locked='%s')>"%( self.id, self.username, self.password, self.creatime, self._locked )
最后再执行创建:
if __name__=='__main__': Base.metadata.create_all()
可以登录数据库查看一下user表是否被创建出来。
3.最后再创建一个py文件(这里命名为test_user.py),用来测试对user表的“增删改查”:
from user_modules import Userfrom connect import session#增def add_user(): # person = User(username='suyn',password='123456') # session.add(person) session.add_all([User(username='der',password='asdfas'),User(username='sa',password='mima99')]) session.commit()#删def delete_user(): row = session.query(User).filter_by(username='der')[0] print(row) session.delete(row) session.commit()#改def update_user(): session.query(User).filter_by(id=3).update({User.password:'abcdefg'}) session.commit()#查def query_user(): row = session.query(User).filter_by(username='suyn').all() row = session.query(User).filter(User.username=='suyn').all() print(row[0]._locked) session.commit()
最后可以进行验证:
if __name__=='__main__': # 验证 # add_user() # delete_user() # update_user() # query_user() print(User.get_id(1)) # 对上页封装的查询进行验证
接下来就告一段落啦~
阅读全文
0 0
- tornado框架SQLAlchemy的操作
- python 的 SQLAlchemy操作
- Python的ORM框架SQLAlchemy
- Python的ORM框架-SQLAlchemy
- sqlalchemy的简单操作汇总
- tornado和sqlalchemy结合使用
- tornado框架的并发问题
- tornado的mysql数据库操作
- sqlalchemy操作
- sqlalchemy操作
- sqlalchemy操作
- Tornado框架
- Tornado框架
- Python的数据库ORM框架:SQLAlchemy
- Python的数据库ORM框架:SQLAlchemy
- Python的ORM框架SQLAlchemy入门教程
- Python的数据库ORM框架:SQLAlchemy
- SQLAlchemy 和其他的 ORM 框架
- 特斯拉将在上海独资建厂 新一代无人机用意念控制飞行
- 硬创先锋 | 傅盛All-in的这家AI公司 过去一年究竟做了什么?
- 项目实战-仿bilibili刷新按钮的实现
- Viewpager+Fragment+Xlistview
- bzoj1051
- tornado框架SQLAlchemy的操作
- 悬空指针
- @Autowired与@Resource的区别
- 多次fork问题(python 版)
- 2735: 杨辉三角形
- 五花八门的main()
- Codeforces Round #442 (Div. 2) A B
- 欢迎使用CSDN-markdown编辑器
- UVA 10891