python:sqlalchemy基本操作

本文介绍了使用Python的SQLAlchemy库进行数据库操作的基本步骤,包括连接数据库、定义数据表基类、设置字段类型、操作会话以及使用Enum枚举类型。通过示例展示了如何创建引擎、建立数据库基类、定义ORM数据表以及执行增删改查操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、sqlalchemey基本数据类型:

数据类型 python数据类型 说明

Integer: int 整形

String: str 字符串

Float :float 浮点型

DECIMAL: decimal.Decimal 定点型

Boolean :bool 布尔型

Date: datetime.date 日期

DateTime: datetime.datetime 日期和时间

Time: datetime.time 时间

Enum: str 枚举类型

Text: str 文本类型

LongText: str 长文本类型

2、Column参数:

default:默认值

nullable:是否为空

primary_key:主键

unique:是否唯一

autoincrement:是否自增

onupdate:更新时执行的

name:数据库映射后的属性

3、代码实例:

数据库连接

from sqlalchemy import create_engine

数据表基类

from sqlalchemy.ext.declarative import declarative_base

表格字段类型

from sqlalchemy import Column,String,Integer,DateTime,Enum,Date,Time

数据表操作会话

from sqlalchemy.orm import sessionmaker
from datetime import datetime

enum是python3 新增

import enum
DB_USERNAME = ‘postgres’
DB_PASSWORD = ‘123456’
DB_HOST = “127.0.0.1”
DB_PORT = “5432”
DB_NAME = “cms”
#连接数据库的信息,# url的格式为:数据库的协议://用户名:密码@ip地址:端口号(默认可以不写)/数据库名
SQLALCHEMY_DATABASE_URI = “postgresql://{}:{}@{}:{}/{}”.format(DB_USERNAME,DB_PASSWORD,DB_HOST,DB_PORT,DB_NAME)

#创建引擎
engines = create_engine(SQLALCHEMY_DATABASE_URI)

连接数库

engines.connect()

#建立数据库基类:数据库建立删除等
dbbase = declarative_base(engines)

表格操作会话:增删改查

session = sessionmaker(engines)()

枚举类

class TagEnum(enum.Enum):
python = “python”
flask = “flask”
django = “django”

继承基类,建立orm对应的数据表格

class Person(dbbase):

#定义表名

tablename = “person”

def init(self,id,username,addr,age,subject = “flask”):
self.id = id
self.username = username
self.addr = addr
self.age = age
self.subject = subject

id = Column(Integer,primary_key=True,autoincrement=True)
username = Column(String(50))
addr = Column(String(100),nullable=True)
age = Column(Integer,nullable=True)
subject = Column(Enum(TagEnum),nullable=True)
create_time = Column(DateTime,default=datetime.now())
update_time = Column(DateTime,onupdate=datetime.now())

if name == “main”:

dbbase.metadata.drop_all() # 删除表
dbbase.metadata.create_all() # 创建表格

# 新增记录:add+commit
for i in range(100):
    p = Person(id=i, username="tom", addr="meiguo", age=18, subject=TagEnum.python)
    session.add(p)
    session.commit()

# 查询:session.query
persons = session.query(Person.id,Person.subject,Person.addr).filter(Person.id > 18)
for p in  persons:
    print(p[0],p[1],p[2])
# like
persons = session.query(Person.id, Person.subject, Person.addr).filter(Person.addr.like("%g%") )
for p in persons:
    print(p[0], p[1], p[2])

# in
persons = session.query(Person.id, Person.subject, Person.addr).filter(Person.subject.in_(["python","flask"])).all()
for p in persons:
    print(p[0], p[1], p[2])

# not in
persons = session.query(Person.id, Person.subject, Person.addr).filter(Person.subject.notin_([TagEnum.python, TagEnum.flask])).all()
print("not in:")
for p in persons:
    print(p[0], p[1], p[2])

# is null
persons = session.query(Person.id, Person.subject, Person.addr).filter(Person.subject==None).all()
print("is null:")
for p in persons:
    print(p[0], p[1], p[2])

# is not null
persons = session.query(Person.id, Person.subject, Person.addr).filter(Person.subject != None).all()
print("is not null:")
for p in persons:
    print(p[0], p[1], p[2])

# and
persons = session.query(Person.id, Person.subject, Person.addr).filter(Person.subject != None, Person.id == 3).all()
print("and:")
for p in persons:
    print(p[0], p[1], p[2])

# or
persons = session.query(Person.id, Person.subject, Person.addr).filter(or_(Person.subject != None, Person.id == 3)).all()
print("or:")
for p in persons:
    print(p[0], p[1], p[2])

#聚合函数:count,sum,avg
rs = session.query(func.count(Person.id)).first()
print(rs)
rs = session.query(func.avg(Person.age)).first()
print(rs)
rs = session.query(func.sum(Person.age)).first()
print(rs)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值