sqlalchemy 的 Core 方式使用示例

知乎: sqlalchemy 的 Core 方式操作数据是一种怎样的体验?

答: 爽!

本文基于:win 10 + python 3.4 + sqlalchemy 1.0.13

基本步骤如下:

1. 绑定数据库

from sqlalchemy import create_engine

engine = create_engine(‘sqlite:///:memory:‘, echo=True)

2. 连接数据库

conn = engine.connect()

3. 元数据

from sqlalchemy import MetaData

metadata = MetaData(engine)

4. 定义表

from sqlalchemy import Table, Column, Integer, String, ForeignKey, Sequence
users = Table(‘users‘, metadata,
    Column(‘id‘, Integer, Sequence(‘user_id_seq‘), primary_key=True),
    Column(‘name‘, String),
    Column(‘fullname‘, String),
)

addresses = Table(‘addresses‘, metadata,
    Column(‘id‘, Integer, primary_key=True),
    Column(‘user_id‘, None, ForeignKey(‘users.id‘)),
    Column(‘email_address‘, String, nullable=False)
)

5. 创建表

# metadata.drop_all()metadata.create_all()

6. 插入

# 方式一
ins = users.insert().values(name=‘jack‘, fullname=‘Jack Jones‘)
conn.execute(ins)

# 方式二
conn.execute(users.insert(), id=2, name=‘wendy‘, fullname=‘Wendy Williams‘)

# 方式三
conn.execute(addresses.insert(), [
    {‘user_id‘: 1, ‘email_address‘ : ‘[email protected]‘},
    {‘user_id‘: 1, ‘email_address‘ : ‘[email protected]‘},
    {‘user_id‘: 2, ‘email_address‘ : ‘[email protected]‘},
    {‘user_id‘: 2, ‘email_address‘ : ‘[email protected]‘},
 ])

7. 查询

from sqlalchemy.sql import select
for row in conn.execute(select([users])):
    print("name:", row[users.c.name], "; fullname:", row[users.c.fullname])

for row in conn.execute(select([users, addresses])):
    print(row)

for row in conn.execute(select([users, addresses]).where(users.c.id == addresses.c.user_id)):
    print(row)

from sqlalchemy.sql import and_, or_, not_
s = select([(users.c.fullname +
              ", " + addresses.c.email_address).
               label(‘title‘)]).       where(
          and_(
              users.c.id == addresses.c.user_id,
              users.c.name.between(‘m‘, ‘z‘),
              or_(
                 addresses.c.email_address.like(‘%@aol.com‘),
                 addresses.c.email_address.like(‘%@msn.com‘)
              )
          )
       )
conn.execute(s).fetchall()

8. 完整代码

# 绑定数据库
from sqlalchemy import create_engine
engine = create_engine(‘sqlite:///:memory:‘, echo=True)

# 连接数据库
conn = engine.connect()

# 元数据
from sqlalchemy import MetaData
metadata = MetaData(engine)

# 定义表
from sqlalchemy import Table, Column, Integer, String, ForeignKey, Sequence
users = Table(‘users‘, metadata,
    Column(‘id‘, Integer, Sequence(‘user_id_seq‘), primary_key=True),
    Column(‘name‘, String),
    Column(‘fullname‘, String),
)

addresses = Table(‘addresses‘, metadata,
    Column(‘id‘, Integer, primary_key=True),
    Column(‘user_id‘, None, ForeignKey(‘users.id‘)),
    Column(‘email_address‘, String, nullable=False)
)

# 创建表# metadata.drop_all()metadata.create_all()

# 插入
# 方式一
ins = users.insert().values(name=‘jack‘, fullname=‘Jack Jones‘)
result = conn.execute(ins)
# 方式二
conn.execute(users.insert(), id=2, name=‘wendy‘, fullname=‘Wendy Williams‘)
# 方式三
conn.execute(addresses.insert(), [
    {‘user_id‘: 1, ‘email_address‘ : ‘[email protected]‘},
    {‘user_id‘: 1, ‘email_address‘ : ‘[email protected]‘},
    {‘user_id‘: 2, ‘email_address‘ : ‘[email protected]‘},
    {‘user_id‘: 2, ‘email_address‘ : ‘[email protected]‘},
 ])

# 查询
from sqlalchemy.sql import select
for row in conn.execute(select([users])):
    print("name:", row[users.c.name], "; fullname:", row[users.c.fullname])

for row in conn.execute(select([users, addresses])):
    print(row)

for row in conn.execute(select([users, addresses]).where(users.c.id == addresses.c.user_id)):
    print(row)

from sqlalchemy.sql import and_, or_, not_
s = select([(users.c.fullname +
              ", " + addresses.c.email_address).
               label(‘title‘)]).       where(
          and_(
              users.c.id == addresses.c.user_id,
              users.c.name.between(‘m‘, ‘z‘),
              or_(
                 addresses.c.email_address.like(‘%@aol.com‘),
                 addresses.c.email_address.like(‘%@msn.com‘)
              )
          )
       )
conn.execute(s).fetchall()
时间: 2024-11-01 05:07:41

sqlalchemy 的 Core 方式使用示例的相关文章

sqlalchemy 的 ORM 方式使用示例

知乎: 使用 sqlalchemy 的 orm 方式操作数据库是一种怎样的体验? 答: 爽! 本文基于:win10 + python3.4 + sqlAlchemy 1.0.13 下面展示其操作步骤: 1. 声明基类 from sqlalchemy.ext.declarative import declarative_base Base = declarative_base() 2. 定义表 from sqlalchemy import Column, Integer, ForeignKey f

各类最新Asp .Net Core 项目和示例源码

1.网站地址:http://www.freeboygirl.com2.网站Asp .Net Core 资料http://www.freeboygirl.com/blog/tag/asp%20net%20core3.各类最新Asp .Net Core 项目和示例源码? github.com/freeboygirl 4.微信公众号:AspNetCore 5.直接在微信公众号发消息即可.

GDB调试core dump文件示例

上篇论述了三层的基本概念,作用,关系,现在展示下系统中用户登陆过程中简单应用三层结构设计思想. vb.NET的操作如下 首先建立以下windows应用程序以及类库 首先建立实体类 Public Class userInfo Private _username As String Public Property UserName As String Get Return _username End Get Set(ByVal value As String) _username = value E

java配置定时任务的几种配置方式及示例

使用java配置定时任务的几种配置方式及示例 (2010-08-21 13:16:10) 转载▼ 标签: spring 定时器 配置 it 分类: java Spring定时器,主要有两种实现方式,包括Java Timer定时和Quartz定时器! 1.Java Timer定时 首先继承java.util.TimerTask类实现run方法 package com.land; import java.util.Date;import java.util.TimerTask; public cla

sqlalchemy 的 ORM 与 Core 混合方式使用示例

知乎: sqlalchemy 的 ORM 与 Core 混合方式操作数据库是一种怎样的体验? 答: 酸! 本文基于:win 10 + python 3.4 + sqlalchemy 1.0.13 基本步骤如下: 1. 绑定数据库 from sqlalchemy import create_engine engine = create_engine('sqlite:///:memory:',echo = True) 2. 建立会话 from sqlalchemy.orm import Sessio

sqlalchemy 的 raw sql 方式使用示例

#获取数据库 from sqlalchemy import create_engine db = create_engine("sqlite:///:memory:", echo=True) #创建表 db.execute(""" create table users( userid char(10), username char(50) )""" ) # 插入记录 resultProxy = db.execute("

使用java配置定时任务的几种配置方式及示例

Spring定时器,主要有两种实现方式,包括Java Timer定时和Quartz定时器! 1.Java Timer定时 首先继承java.util.TimerTask类实现run方法 package com.land; import java.util.Date;import java.util.TimerTask; public class TimerTest extends  TimerTask  { @Override public void run() {  // TODO Auto-

ASP .NET Core 基本知识点示例 目录

ASP.NET Core 的 运行机制 文章 ASP.NET Core 中的 配置 文章 源代码 ASP.NET Core 中的 依赖注入 文章 源代码 ASP.NET Core 中的 日志 文章 源代码 ASP.NET Core 中的 缓存 文章 源代码 ASP.NET Core 中的 ORM 之 Dapper 文章 源代码 原文地址:https://www.cnblogs.com/royzshare/p/9547683.html

使用servletAPI三种方式简单示例

一.直接实现Action接口或集成ActionSupport类(推荐) public class HelloAction implements Action { @Override public String execute() throws Exception { Map<String, Object> requestScope = (Map<String, Object>) ActionContext.getContext().get("request");