tornado 06 数据库 ORM

tornado 06 数据库—ORM—SQLAlchemy——基本内容及操作

一、 ORM

#在服务器后台,数据是要储存在数据库的,但是如果项目在开发和部署的时候,是使用的不同的数据库,该怎么办?是不是需要把所有的SQL语句在重新写一遍呢?

#用ORM隔离框架和数据库
tornado ------> ORM -------> 数据库
#ORM
#全称:Object Relational Mapping 对象关系映射
#通过ORM可以不用关心后台是使用的哪种数据库,只需要按照ORM所提供的语法规则去书写相应的代码,ORM就会自动地转换成对应数据库的SQL语句

二、SQLAlchemy 连接数据库

#1、安装SQLAlchemy
    pip install pymysql
    pip install sqlalchemy
#2、导入模块
    from sqlalchemy import create_engine
#3、数据库数据
HOSTNAME = ‘127.0.0.1‘
PORT = ‘3306‘
DATABASE = ‘mydb‘
USERNAME = ‘admin‘
PASSWORD = ‘Root110qwe‘
#4、创建数据库
mysql  -u root -p qwe123 #进入mysql
create database `mydb`; #创建mydb数据库
select host,user from mysql.user; #查看host user
grant all on *.* to ‘admin‘@‘%‘; # 赋予权限
flush privileges; #刷新数据库

  python代码,这是在connect.py里面的代码

from sqlalchemy import  create_engine

HOSTNAME = ‘127.0.0.1‘
PORT = ‘3306‘
DATABASE = ‘mydb‘
USERNAME = ‘admin‘
PASSWORD = ‘Root110qwe‘

Db_url = ‘mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8‘.format(
    USERNAME,
    PASSWORD,
    HOSTNAME,
    PORT,
    DATABASE
)

engine = create_engine(Db_url)

if __name__ == ‘__main__‘:
    connetion = engine.connect()
    result = connetion.execute(‘select 1‘)
    print(result.fetchone())

三、创建module

#刚才已经使用SQLAlchemy连上数据库,现在该如何在数据库里面新建表呢?
#数据库里面的一张表代表python中的一个类
#第1步 创建Module的Base类,在connect.py里面添加

from sqlalchemy.ext.declarative import  declarative_base
Base = declarative_base(engine)

#对象关系类映射,数据库中的表和python中的相对应,创建的类必须继承自sqlalchemy中的基类

#使用declarative方法定义的映射类依据一个基类,这个基类是维系类和数据表关系的目录

#应用通常只需要有一个Base的实例。我们通过declarative_base() 功能创建一个基类。
#以后换数据库的时候,只需要改变数据库的上面的代码,如HOSTNAME等等,后面的user_modules都不需要改变
#第2步 创建Module 在user_module.py里面输入一下代码
from datetime import datetime
from sqlalchemy import Column,Integer,String,DateTime,Boolean
from connect import Base

class User(Base):
    __tablename__ = ‘user‘
    id = Column(Integer,primary_key=True,autoincrement=True)
    username = Column(String(20))
    password = Column(String(50))
    creatime = Column(DateTime,default=datetime.now)
    _locked = Column(Boolean,default=False,nullable=False)

    def __repr__(self): #这一段可有可无
        return """<User(id=%s)>
        """%(
            self.id
        )

#我们用类来表示数据库里面的表!!!

#这些表的类都继承于我们的Base基类

#在类里面我们定义一些属性,这个属性通过映射,就对应表里面的字段
#第3步 创建Module
if __name__ == ‘__main__‘:
    Base.metadata.create_all()

#执行此代码,就会把创建好的Module映射到数据库中
Module
    __tablename__ = ‘user‘ #数据库中的表名
    id = Column(Integer,primary_key=True,autoincrement=True)#Column用来创建表中的字段的一个方法;整型,映射到数据库中的int类型;表内元素分别为主键和自动添加编号
    username = Column(String(20)) #字符类型,映射到数据库中的varchar类型,需要提供一个字符长度
    password = Column(String(50))
    creatime = Column(DateTime,default=datetime.now) #时间类型
    _locked = Column(Boolean,default=False,nullable=False) #表内元素分别表示默认和非空
#想要from connect import Base不报错(报错时是可以运行代码的)

#在data文件夹里面右键 选中Mark directory as 选中sources root

四、增删改查

#如何增删改查数据库里面的数据呢

#在connect.py里面输入一下代码

from sqlalchemy.orm import sessionmaker
Session = sessionmaker(engine)
session = Session()
#再创建一个test_user_module.py用来实现增删改查
from connect import session #导入session
from user_modules import User #导入module

def add_user(): #增
    person = User(username=‘gaohuiqi‘,password=‘123‘) #插入1条
    #session.add(person)
    session.add_all([
            User(username=‘zhouzhou‘,password=‘123‘),
            User(username=‘lala‘,password=‘1234‘)
        ]
    )# 插入多条数据

    session.commit() #刷入

def search_user():#查
    rows = session.query(User).all() #查询所有
    rows = session.query(User).first() #查询第一个
    print(rows)

def update_user():#改
    rows = session.query(User).filter(User.username==‘gaohuiqi‘).update({User.password:1})
    session.commit()

def delete_user():#删除
    rows = session.query(User).filter(User.username==‘gaohuiqi‘)[0]
    print(rows)
    session.delete(rows)
    session.commit()

if __name__==‘__main__‘: #调用
    # add_user()
    # search_user()
    # update_user()
    delete_user()
#查
在查的时候如果出现一些内存地址而不是具体的表的数据,就需要在前面写上user_module.py里面写上repr(重写函数)

原文地址:https://www.cnblogs.com/xuchengcheng1215/p/9005203.html

时间: 2024-10-08 20:24:20

tornado 06 数据库 ORM的相关文章

Android 数据库ORM框架GreenDao学习心得及使用总结&lt;一&gt;

Android 数据库ORM框架GreenDao学习心得及使用总结<一> 转: http://www.it165.net/pro/html/201401/9026.html 最近在对开发项目的性能进行优化.由于项目里涉及了大量的缓存处理和数据库运用,需要对数据库进行频繁的读写.查询等操作.因此首先想到了对整个项目的数据库框架进行优化. 原先使用android本身内置的sqllite,也就是用的最基本的SQLiteOpenHelper方法,这种方法对自己来说比较方便易懂.但是在使用过程中感觉很繁

django之数据库orm

django之数据库orm 一.数据库的配置 1 django默认支持sqlite,mysql, oracle,postgresql数据库. <1>sqlite django默认使用sqlite的数据库,默认自带sqlite的数据库驱动 引擎名称:django.db.backends.sqlite3 <2>mysql 引擎名称:django.db.backends.mysql 2 mysql驱动程序 MySQLdb(mysql python) mysqlclient MySQL P

beego数据库orm操作数据表返回数组

1.0 数据表模型(mode) func GetMyads(zoneid string) ([]orm.ParamsList, error) { tidNum, err := strconv.ParseInt(zoneid, 10, 32) if err != nil { return nil, err } //查询数据表 o := orm.NewOrm() var lsits []orm.ParamsList num, err := o.Raw("SELECT * FROM `oepre_my

.Net的Oracle数据库ORM控件dotConnect for Oracle下载地址及功能详解

原文来自龙博方案网http://www.fanganwang.com/product/1330转载请注明出处 dotConnect for Oracle完全基于ADO.NET方法,因此您完全可以采用标准ADO.NET数据提供的方法来使用它.是一款为Microsoft .NET Framework提供直接Oracle数据库连接的数据发生器控件. 具体功能: 无需Oracle客户端,采用直接模式提供数据库连接 100%代码管理 具有高表现性能 支持Oracle 10g, 9i, 8i 和 8.0,包

Android 开源项目android-open-project工具库解析之(一) 依赖注入,图片缓存,网络相关,数据库orm工具包,Android公共库

一.依赖注入DI 通过依赖注入减少View.服务.资源简化初始化,事件绑定等重复繁琐工作 AndroidAnnotations(Code Diet) android快速开发框架 项目地址:https://github.com/excilys/androidannotations 文档介绍:https://github.com/excilys/androidannotations/wiki 官网网址:http://androidannotations.org/ 特点:(1) 依赖注入:包括view

MySQL数据库06 /数据库总结

MySQL数据库06 /数据库总结 1.数据库 DBMS MySQL -RDBMS 关系型 2.数据库分类 关系型:mysql.oracle.sqlserver.access 非关系型:redis.mongodb... 3.修改密码 mysql>set password for [email protected]'127.0.0.1'=password('新密码') mysqladmin -u root -p老密码 password 新密码;(不用进入mysql里边) mysql>update

《Andorid开源》greenDao 数据库orm框架

一 前言:以前没用框架写Andorid的Sqlite的时候就是用SQLiteDatabase ,SQLiteOpenHelper ,SQL语句等一些东西,特别在写SQL语句来进行 数据库操作的时候是一件很繁琐的事情,有时候没有错误提示的,很难找到错误的地方,即费力又花时间. 现在使用greenDao就可以避免那些繁琐的SQL文了,极大的简化了对Sqlite的操作. greenDao官方网址是:http://greendao-orm.com/ greenDao官方demo下载地址:https://

数据库ORM框架GreenDao

常用的数据库: 1). Sql Server2). Access3). Oracle4). Sysbase5). MySql6). Informix7). FoxPro8). PostgreSQL9). IBM 的DB2 2.特点. -oracle: 1.数据库安全性很高,很适合做大型数据库.支持多种系统平台(HPUX.SUNOS.OSF/1.VMS. WINDOWS.WINDOWS/NT.OS/2). 2.支持客户机/服务器体系结构及混合的体系结构(集中式.分布式. 客户机/服务器). -sq

【转载】Android开源:数据库ORM框架GreenDao学习心得及使用总结

转载链接:http://www.it165.net/pro/html/201401/9026.html 最近在对开发项目的性能进行优化.由于项目里涉及了大量的缓存处理和数据库运用,需要对数据库进行频繁的读写.查询等操作.因此首先想到了对整个项目的数据库框架进行优化. 原先使用android本身内置的sqllite,也就是用的最基本的SQLiteOpenHelper方法,这种方法对自己来说比较方便易懂.但是在使用过程中感觉很繁琐,从建表到对表的增删改查等操作,如果表对象的属性很多,就需要使用大量的