[1024]python sqlalchemy中create_engine用法

2023-10-29

用法

engine = create_engine('dialect+driver://username:password@host:port/database')

dialect:数据库类型
driver:数据库驱动选择
username:数据库用户名
password: 用户密码
host:服务器地址
port:端口
database:数据库

PostgreSQL

default
engine = create_engine('postgresql://scott:tiger@localhost/mydatabase')
psycopg2
engine = create_engine('postgresql+psycopg2://scott:tiger@localhost/mydatabase')
pg8000
engine = create_engine('postgresql+pg8000://scott:tiger@localhost/mydatabase')

More notes on connecting to PostgreSQL at PostgreSQL.

MySQL

default
engine = create_engine('mysql://scott:tiger@localhost/foo')
mysql-python
engine = create_engine('mysql+mysqldb://scott:tiger@localhost/foo')
MySQL-connector-python
engine = create_engine('mysql+mysqlconnector://scott:tiger@localhost/foo')
OurSQL
engine = create_engine('mysql+oursql://scott:tiger@localhost/foo')

More notes on connecting to MySQL at MySQL.

Oracle

engine = create_engine('oracle://scott:tiger@127.0.0.1:1521/sidname')
engine = create_engine('oracle+cx_oracle://scott:tiger@tnsname')

More notes on connecting to Oracle at Oracle.

Microsoft SQL Server

engine = create_engine('mssql+pyodbc://scott:tiger@mydsn')

pymssql

engine = create_engine('mssql+pymssql://scott:tiger@hostname:port/dbname')
SQLite
engine = create_engine('sqlite:///foo.db')
engine = create_engine('sqlite:absolute/path/to/foo.db')

使用

  • 下面mysql作为例子
yconnect = create_engine('mysql+mysqldb://root:password@host:port/db?charset=utf8')  
pd.io.sql.to_sql(DataResultDF,'tablename', yconnect, schema='db', if_exists='append')   
  • 创建表结构

使用 Schema Type/SQL Expression Language/Engine/ConnectionPooling/Dialect 进行数据库操作。Engine使用Schema Type创建一个特定的结构对象,之后通过SQL Expression Language将该对象转换成SQL语句,然后通过 ConnectionPooling 连接数据库,再然后通过 Dialect 执行SQL,并获取结果。

from sqlalchemy import create_engine, Table, Column, Integer, String, MetaData, ForeignKey
import MySQLdb


#创建数据库连接
engine = create_engine("mysql+mysqldb://liuyao:liuyao@121.42.195.15:3306/db_name", max_overflow=5)
# 获取元数据
metadata = MetaData()
# 定义表
user = Table('user', metadata,
    Column('id', Integer, primary_key=True),
    Column('name', String(20)),
    )
 
color = Table('color', metadata,
    Column('id', Integer, primary_key=True),
    Column('name', String(20)),
    )
#将dataframe 添加到 tmp_formidinfo 如果表存在就添加,不存在创建并添加 
pd.io.sql.to_sql(DataResultDF,'tmp_formidinfo',engine, schema='db_name', if_exists='append')                
 
# 执行sql语句
engine.execute(
    "INSERT INTO db_name.color(id, name) VALUES ('1', 'liuyao');"
)
result = engine.execute('select * from color')
print(result.fetchall())

-----------------------------------------------------------------------------------
sql = 'select * from customer2018;'
df = pd.read_sql_query(sql, engine)
# read_sql_query的两个参数: sql语句, 数据库连接
df = pd.read_sql_query(sql, engine)
print(df)

create_engine 还有很多可选参数,这里介绍几个重要的参数

engine=create_engine('mysql://user:password@localhost:3306/test?charset=utf8mb4',
echo=False,pool_size=100,pool_recycle=3600,pool_pre_ping=True)
  • echo :为 True 时候会把sql语句打印出来,当然,你可以通过配置logger来控制输出,这里不做讨论。
  • pool_size: 是连接池的大小,默认为5个,0表示连接数无限制
  • pool_recycle: MySQL 默认情况下如果一个连接8小时内容没有任何动作(查询请求)就会自动断开链接,出现 MySQL has gone away的错误。设置了 pool_recycle 后 SQLAlchemy 就会在指定时间内回收连接。如果设置为3600 就表示 1小时后该连接会被自动回收。
  • pool_pre_ping : 这是1.2新增的参数,如果值为True,那么每次从连接池中拿连接的时候,都会向数据库发送一个类似 select 1 的测试查询语句来判断服务器是否正常运行。当该连接出现 disconnect 的情况时,该连接连同pool中的其它连接都会被回收。

参考:https://blog.csdn.net/P01114245/article/details/89918197
https://www.jianshu.com/p/f039da1d90ce
https://www.jb51.net/article/164591.htm

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[1024]python sqlalchemy中create_engine用法 的相关文章

  • TAP 系列文章4

    基于Backstage的开发者门户 随着云原生的理念和技术逐渐深入人心 很多企业都在思考和实践如何落地 实实在在地达成云原生所承诺的目标 使工程师能够轻松地对系统作出频繁和可预测的重大变更 越来越多的企业认识到 以Kubernetes为代表
  • 微软1G网盘注册方法

    微软提供免费网盘 可作外链 可用迅雷 很好的存储地方 拥有1G的空间 单个文件限制大小为50MB 支持外链 需要传到Public folders里面 支持迅雷下载 经过我本人测试 下载速度还是蛮快的 能达到180k每秒 不过跟其他国内的网盘
  • vue整理笔记(二)

    前言 上次整理到vue的项目创建 这次就来说说vue的单文件组件创建 1 Vue 组件 1 通过命令 vue init webpack 项目名 创建一个项目 例子 vue create vue2 demo 2 打开src的文件夹 打开com
  • linux cat命令详解

    cat命令 1 cat linux txt 查看linux txt内容 2 cat n linux txt 查看linux txt文件的内容 并且由1开始对所有输出行进行编号 包括空白行 3 cat b linux txt 用法和 n 差不

随机推荐

  • 自己写的制作 city的语义分割tfrecord 适用于deeplabv3+

    自己写的制作 city的语义分割tfrecord 适用于deeplabv3 自用 Converts PASCAL dataset to TFRecords file format from future import absolute im
  • Python 使用 Scrapy 发送 post 请求的坑

    From https www jb51 net article 146769 htm 使用 requests 发送 post 请求 先来看看使用requests来发送post请求是多少好用 发送请求 Requests 简便的 API 意味着
  • 如何在win10上搭建本地服务器

    win10上搭建本地服务器 1 在我的电脑上 打开控制面板 2点击程序和功能 启用关闭windows功能 3 选择如下功能 4 点击确定 打开iis管理器 右键电脑 选择管理 5 找到这个 6 选择浏览网站 成功
  • linux 内存分配

    内存管理 一 malloc的底层实现 Malloc函数用于动态分配内存 为了减少内存碎片和系统调用的开销 malloc其采用内存池的方式 先申请大块内存作为堆区 然后将堆区分为多个内存块 以块作为内存管理的基本单位 当用户申请内存时 直接从
  • 信息增益计算和决策树生长过程

    信息增益计算和决策树生长过程 给定训练集S 下面以信息增益作为最佳划分的标准 演示信息增益的计算和决策树生长的过程 根节点 1 以 Outlook 被选做划分属性 总共有14条数据 打球9条 不打球的5条 根据Outlook进行划分 Sun
  • SonrLint常见解决方案

    Sonar是什么 Sonar是一个用于代码质量管理的开源平台 用于管理源代码的质量 通过插件形式 可以支持包括java C C C PL SQL Cobol JavaScrip Groovy等等二十几种编程语言的代码质量管理与检测 Sona
  • token不存在问题

    解决 添加一个token鉴权的请求头 注意 要在在缺少的文件添加该代码 const token localStorage getItem TOKEN
  • vector subscript out of range数组下标越界错误

    在使用vector二维数组时 产生 vector subscript out of range 错误 检查之 后并没有发现数组下标越界问题 百度了一下 发现原来是数组并没有初始化 赋值 没有分配空间 所以不能采用下标的方式进行访问 解决方法
  • antd 2.2.8 版本 Form表单使用useForm带星号校验和带星号不校验的写法以及不带星号不校验的写法

    1 带星号且校验
  • 02 Elasticsearch基本常用命令详解

    IK分词器 分词 把一段中文或者词组划分成一个个关键字 我们在搜索的时候会把自己的信息进行拆分 会把数据库中或者索引库中的数据进行分词 然后进行一个个匹配操作 默认的中文分词是将每一个看成一个词 比如 我爱王军 会被拆分成 我 爱 王 军
  • SSM框架下的学生管理系统--序言

    先开个博 占个坑 也是督促自己尽快提上日程 这是为初学者写的一个系列性的文章 我会不断更新 希望看到文章的人能有所收获 简单介绍下SSM 第一个S指的是Spring 第二个S指的是SpringMVC 最后一个M指的是Mybatis 我们这个
  • c++ 入门基础(一)

    第一个c 程序 include
  • MySQL5.6数据库8小时内无请求自动断开连接

    问题 最近的项目中 发现Mysql数据库在8个小时内 没有请求时 会自动断开连接 这是MySQL服务器的问题 The last packet successfully received from the server was 1 836 1
  • 从零开始做一个贪吃蛇游戏(用纯html + css + js实现,主要技术栈:vue + uniCloud)

    今天给大家分享一个贪吃蛇的小游戏 用纯html css js实现 主要技术栈 vue uniCloud 希望能对还未涉及游戏开发的小伙伴有所启发 由于技术栈很浅 希望大佬勿喷 话不多说 直接开撸 效果图如下 初始化项目 本项目是基于uni
  • 网络基础——TCP与UDP的区别

    Web基础 COOKIE与SESSION的区别 如上表格 区别总结如下 1 连接性质不同 TCP是面向有连接 而UDP是面向无连接的 所谓的面向有连接 通俗讲是指传输数据时 是否需要先建立通讯 确认对方在 并且有空接收数据 面向无连接 是不
  • 探索loss.backward() 和optimizer.step()的关系并灵活运用

    loss backward 和optimizer step 的关系及灵活运用 在deep learning的模型训练中 我们经常看到如下的代码片段 loss backward optimizer step 那么 这两个函数到底是怎么联系在一
  • layui数据可视化_利用ggplot2进行数据可视化

    2020 04 25 1 1 first step 意识到ggplot绘制其实是由一层层图层组成 一个命令即可增加一层 ggplot data mpg geom point mapping aes x displ y hwy ggplot
  • TensorFlow 2.0教程05:跨多个节点的分布式培训

    分布式训练允许扩大深度学习任务 因此可以学习更大的models或以更快的速度进行训练 在之前的教程中 我们讨论了如何MirroredStrategy在单个节点 物理机器 内实现多GPU训练 在本教程中 我们将解释如何在多个节点之间进行分布式
  • 永磁同步电机矢量控制(五)——波形记录及其分析

    恰饭一下 已经过了工作的年纪 在这里稍微出一下自己做的一套永磁同步电机的教程 为了解决电机控制入门难的问题 我将自己从一知半解到现在的学习记录整理成十个部分学习教程 从基础的矢量控制 到应用性较强的MTPA 弱磁控制等 最后深入到无速度传感
  • [1024]python sqlalchemy中create_engine用法

    用法 engine create engine dialect driver username password host port database dialect 数据库类型 driver 数据库驱动选择 username 数据库用户名