Python的SQLAlchemy库提供了
create_engine()
函数,用于创建一个数据库连接的引擎对象。这个引擎对象可以被用于执行SQL查询并与数据库进行交互。下面是
create_engine()
函数的一些常用参数:
dialect+driver://username:password@host:port/database
: 这是一个必需的参数,用于指定连接数据库的URL,其中
dialect
表示数据库类型(如
mysql
、
postgresql
等),
driver
表示使用的数据库驱动程序(如
psycopg2
、
pymysql
等),
username
和
password
是登录数据库所需的凭证,
host
和
port
表示数据库服务器的地址和端口号,
database
表示要连接的数据库名称。
echo
: 如果设置为
True
,则会输出SQLAlchemy执行的所有SQL语句和相关调试信息。这对于调试应用程序非常有用。
pool_size
和
max_overflow
: 这两个参数用于控制连接池的大小。
pool_size
表示连接池中要保留的连接数,
max_overflow
表示连接池中允许创建的最大连接数。如果连接池中的连接数达到
pool_size
,而此时又有新的连接请求到来,则会创建新的连接,直到连接数达到
max_overflow
。
pool_pre_ping
和
pool_recycle
: 这两个参数用于控制连接池中的连接何时被检查和回收。
pool_pre_ping
表示在每次从连接池中取出连接时,是否执行一次“ping”操作,以确保连接仍然有效。
pool_recycle
表示连接在池中的最长时间(以秒为单位),超过这个时间就会被回收。
以下是一个示例,展示如何使用
create_engine()
函数来创建一个MySQL数据库连接引擎对象:
from sqlalchemy import create_engine
engine = create_engine("mysql+pymysql://username:password@localhost/mydatabase", echo=True, pool_size=5, max_overflow=10)
上面的代码中,engine
是一个Engine
对象,它表示与MySQL数据库的连接。可以使用该对象的execute()
方法来执行SQL查询,并使用fetchall()
方法来获取结果。例如:
result = engine.execute("SELECT * FROM mytable")
rows = result.fetchall()