SQLAlchemy(一)

说明

SQLAlchemy只是一个翻译的过程,我们通过类来操作数据库,他会将我们的对应数据转换成SQL语句。

运用ORM创建表

#!/usr/bin/env python
#! -*- coding:utf-8 -*- import sqlalchemy
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String
from sqlalchemy.orm import sessionmaker
print(sqlalchemy.__version__) engine = create_engine('sqlite:///dbyuan1.db', echo=True) Base = declarative_base() # 生成一个SQLORM基类 class User(Base):
__tablename__ = 'users' id = Column(Integer, primary_key=True)
name = Column(String)
fullname = Column(String)
password = Column(String) def __repr__(self):
return "<User(name='%s', fullname='%s', password='%s')>" % (
self.name, self.fullname, self.password) Base.metadata.create_all(engine) # 创建所有表结构 ed_user = User(name='xiaoyu', fullname='Xiaoyu Liu', password='')
print(ed_user)
# 这两行触发sessionmaker类下的__call__方法,return得到 Session实例,赋给变量session,所以session可以调用Session类下的add,add_all等方法
MySession = sessionmaker(bind=engine)
session = MySession() session.add(ed_user) session.commit()

代码

一、链接数据库

engine = create_engine('sqlite:///dbyuan1.db', echo=True)

说明:
echo=True:当设置了这个参数的时候,表示当我们通过类操作数据库,将数据装换成SQL语句,并在我们执行的时候,会给我们显示出来。

二、生成基类

类继承基类

Base = declarative_base()#生成一个SQLORM基类

SQLAlchemy(一)

三、创建表

__tablename__ = 'users'

说明:
__tablename__ :固定格式。后面跟自定义的表名。

四、构建表的列名

SQLAlchemy(一)

说明:
1、这些字段,创建的就是数据库中表对应的列名。
2、Column:创建列
3、Integer, String:这是是创建列的数据类型。
4、primary_key:设置主键
5、autoincrement:设置自增,默认设置主键是自增的。

SQLAlchemy(一)

五、创建表

之间的操作是将表定义好,下面的才是创建表。

Base.metadata.create_all(engine) #创建所有表结构

说明:
前面将函数,继承一个基类,用处就在这里,他会将他的子类代表的表在数据库中创建。

执行目前的代码结果:

SQLAlchemy(一)

通过ORM操作表

一、删除表

Base.metadata.drop_all(engine)

说明:
这个功能个,删除所有的表。

二、增加数据

MySession = sessionmaker(bind=engine)
session = MySession() session.add(ed_user)

说明:
创建了一个对象,并对象加括号,执行对象中的__call__方法,会返回一个session对象,里面封装了各种操作数据库表的方法。

  • .add():往表中增加单条数据
  • .sdd_all():往表中批量增加数据
  • .query():查看数据,后面跟具体查询内容

SQLAlchemy(一)

query接收参数:

  • User:表示操作的表的的名字。
  • all():表示查看全部数据。
  • 上图返回的结果,是一个列表,里面包含对应表列个数的对象,一列就是一个对象。

strong text特殊说明:

SQLAlchemy(一)

图中 "~":表示取反的意思。

上一篇:Div 添加阴影


下一篇:oracle与mysql表的互相导入导出