[1024]python sqlalchemy中create_engine用法

用法

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

  • 19
    点赞
  • 109
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
使用 `create_engine` 方法创建 SQLAlchemy 引擎对象可以连接到数据库,并允许你执行 SQL 查询和操作数据库。 以下是使用 `create_engine` 方法的基本语法: ```python from sqlalchemy import create_engine # 创建一个引擎对象 engine = create_engine('dialect+driver://user:password@host:port/database') ``` - `dialect`:数据库类型,例如 `mysql`、`sqlite`、`postgresql` 等。 - `driver`:驱动程序,帮助 SQLAlchemy 与数据库交互。 - `user`:用户名。 - `password`:密码。 - `host`:连接的主机名。 - `port`:连接的端口号。 - `database`:要连接的数据库名称。 例如,连接到本地 SQLite 数据库: ```python from sqlalchemy import create_engine # 创建一个引擎对象 engine = create_engine('sqlite:///example.db') ``` 连接到远程 MySQL 数据库: ```python from sqlalchemy import create_engine # 创建一个引擎对象 engine = create_engine('mysql+pymysql://user:password@host:port/database') ``` 连接到远程 PostgreSQL 数据库: ```python from sqlalchemy import create_engine # 创建一个引擎对象 engine = create_engine('postgresql://user:password@host:port/database') ``` 连接到远程 Oracle 数据库: ```python from sqlalchemy import create_engine # 创建一个引擎对象 engine = create_engine('oracle://user:password@host:port/database') ``` 创建完引擎对象后,你可以使用 `execute` 方法来执行 SQL 查询和操作数据库。例如,执行一个查询: ```python result = engine.execute('SELECT * FROM my_table') ``` 这将返回一个 `ResultProxy` 对象,你可以使用它来获取查询结果。例如,获取查询结果的所有行: ```python rows = result.fetchall() ``` 或获取查询结果的第一行: ```python row = result.fetchone() ``` 你还可以使用 `execute` 方法来执行 SQL 插入、更新或删除操作。例如,插入一行数据: ```python engine.execute("INSERT INTO my_table (column1, column2) VALUES ('value1', 'value2')") ``` 更多关于 SQLAlchemy 的详细信息请参考官方文档:https://docs.sqlalchemy.org/en/14/core/engines.html
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

周小董

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值