首页 > 数据库 >数据库sqlalchemy

数据库sqlalchemy

时间:2023-04-09 20:14:31浏览次数:37  
标签:engine sqlalchemy 数据库 线程 True create pool

sqlalchemy

是一个基于python的orm框架,可以让我们在python中可以使用sql操作数据库

flask 中没有orm框架 都是使用sqlalchemy作为操作数据库表的模块
fastapi 也是使用的sqlchemy


1.安装 pip3.8 install sqlalchemy

# sqlalchemy本身是无法操作数据库的,必须要使用pymysql一起


如何使用sqlalchemy写原生sql

# 第一步:导入
from sqlalchemy import create_engine

# 第二步:生成引擎对象
engine = create_engine(
    "mysql+pymysql://moongod:[email protected]:3306/FlowProps",
    # 连接mysql用户是moongod密码是123 连接的库名是FlowProps
    max_overflow=2,  # 超过连接池大小外最多创建的连接
    pool_size=10,  # 连接池大小
    pool_timeout=30,  # 池中没有线程最多等待的时间,否则报错
    pool_recycle=-1  # 多久之后对线程池中的线程进行一次连接的回收(重置)
)
# 第三步:使用引擎获取连接,操作数据库
conn = engine.raw_connection()
cursor = conn.cursor()
cursor.execute('select * from app_props')
print(cursor.fetchall())

使用sqlalchemy创建表

# 第一步导入
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String, Text, ForeignKey, DateTime
import datetime

# 第二步 生成基类
Base = declarative_base()

# 第三步 继承基类编写表 和 字段
class User(Base):
    id = Column(Integer, primary_key=True,autoincrement=True)
    name = Column(String(32), index=True, nullable=False)
    # nullable=False 不可以为空
    email = Column(String(36), unique=True)
    ctime = Column(DateTime, default=datetime.datetime.now)
    extra = Column(Text, nullable=True)

    __tablename__ = 'users'


# 第四步 生成数据库连接 首先要自己创好库
engine = create_engine(
    "mysql+pymysql://moongod:[email protected]:3306/text",
    max_overflow=0,  # 超过连接池大小外最多创建的连接
    pool_size=5,  # 连接池大小
    pool_timeout=30,  # 池中没有线程最多等待的时间,否则报错
    pool_recycle=-1  # 多久之后对线程池中的线程进行一次连接的回收(重置)
)

# 第五步 执行表迁移 创建表
Base.metadata.create_all(engine)



# 删除所有表的指令
Base.metadata.drop_all(engine)


  
  
 
参数:
primary_key=True  设置主键 主键自带非空唯一自增
Integer         整形
String(32)      字符串类型 最多32位
nullable=False  不可以为空
unique=True     唯一值索引



# 第七步执行表迁移
# 库需要自己去创建,举例text库   
engine = create_engine(
    "mysql+pymysql://root:[email protected]:3306/text",
    # 用户root密码123
    max_overflow=0,  # 超过连接池大小外最多创建的连接
    pool_size=5,  # 连接池大小
    pool_timeout=30,  # 池中没有线程最多等待的时间,否则报错
    pool_recycle=-1  # 多久之后对线程池中的线程进行一次连接的回收(重置)
)





# 把表同步到数据库  这样就直接创建表了(把被Base管理的所有表,都创建到数据库)
Base.metadata.create_all(engine)


# 把所有表删除
# Base.metadata.drop_all(engine)

标签:engine,sqlalchemy,数据库,线程,True,create,pool
From: https://www.cnblogs.com/moongodnnn/p/17300925.html

相关文章

  • 50 openEuler搭建PostgreSQL数据库服务器-配置环境
    50openEuler搭建PostgreSQL数据库服务器-配置环境说明:以下环境配置仅为参考示例,具体配置视实际需求做配置50.1关闭防火墙并取消开机自启动说明:测试环境下通常会关闭防火墙以避免部分网络因素影响,视实际需求做配置。在root权限下停止防火墙。#systemctlstopfire......
  • C# 连接数据库
    一、SQLSERVER连接字符串语法:1、SQLSERVER验证(两种写法)(安全连接)stringconnStr="DataSource=.;InitialCatalog=DatabaseName;UserId=sa;Password=123";或stringconnStr="server=.;database=DatabaseName;uid=sa;pwd=123";即:DataSource<=>serve......
  • sqlite数据库在close()之后任然不能释放与db文件的连接
    conn.Close();conn.Dispose();在close和dispose后,必须要加上以下两句代码,让垃圾回收机制启动,否则仍不能释放与db文件的连接GC.Collect();GC.WaitForPendingFinalizers();......
  • ORACLE数据库中ORACLE_SID与INSTANCE_NAME的差异
    ORACLE数据库中ORACLE_SID与INSTANCE_NAME在概念和意义上有什么异同呢?下面简单来总结概况一下,很多时候,不少人都搞不清楚两者的异同,甚至认为两者是等价的。ORACLE_SID与INSTANCE_NAME的异同ORACLE_SID参数是操作系统的环境变量,用于和操作系统进行交互。也用于定义一些数据库参数......
  • TiDB 数据库大版本升级-基于TiCDC异机升级
    作者:gary一、前言 本操作手册描述了xx用户TiDB集群基于TiCDC进行大版本升级的操作过程、操作方法与注意事项,用于指导xx用户完成TiDB集群基于TiCDC进行大版本异机升级以及回退方案。 二、升级架构图 ** **TiCDC的系统架构如上图所示:部署一套所需升级版本的下游TiDB集群......
  • Python ORM Pony MySQL数据库 常用操作
    Pony是一个高级的对象关系映射器ORM框架。Pony它能够使用Python生成器表达式和lambdas向数据库编写查询。Pony分析表达式的抽象语法树,并将其转换为SQL查询。支持SQLite,MySQL,PostgreSQL和Oracle等数据库,本文主要介绍PythonORMPony中MySQL数据库常用操作,及数据增加、删除、修......
  • 3.MySQL数据库 - 3
    MySQL数据库-3视图问题对于复杂的查询,往往是有多个数据表进行关联查询而得到,如果数据库因为需求等原因发生了改变,为了保证查询出来的数据与之前相同,则需要在多个地方进行修改,维护起来非常麻烦解决办法:定义视图视图是什么通俗的讲,视图就是一条SELECT语句执行后返回的结果集......
  • 2.MySQL数据库 - 2数据表数据的增删改查
    数据表数据的增删改查专项训练创建数据库、数据表--创建数据库createdatabasepython_test_1charset=utf8;--使用数据库usepython_test_1;--students表createtablestudents(idintunsignedprimarykeyauto_incrementnotnull,namevarchar(20)def......
  • 1.MySQL数据库 - 1
    MySQL数据库-1一个数据库就是一个完整的业务单元,可以包含多张表,数据被存储在表中在表中为了更加准确的存储数据,保证数据的正确有效,可以在创建表的时候,为表添加一些强制性的验证,包括数据字段的类型、约束数据类型可以通过查看帮助文档查阅所有支持的数据类型使用数据......
  • MongoDB 数据库
    MongoDB数据库"NoSQL"⼀词最早于1998年被⽤于⼀个轻量级的关系数据库的名字随着web2.0的快速发展,NoSQL概念在2009年被提了出来NoSQL在2010年⻛⽣⽔起,现在国内外众多⼤⼩⽹站,如facebook、google、淘宝、京东、百度等,都在使⽤nosql开发⾼性能的产品对于⼀名程序员来讲......