使用SQLAlchemy从Pandas数据框架创建一个SQL表

使用SQLAlchemy从Pandas数据框架创建一个SQL表

在这篇文章中,我们将讨论如何使用SQLAlchemy从Pandas数据框架创建一个SQL表。

作为第一步,使用SQLAlchemy的create_engine()函数与你现有的数据库建立连接。

语法:

from sqlalchemy import create_engine

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

解释:

  • dialect –DBMS的名称
  • driver – 在SQLAlchemy和数据库之间移动信息的DB API的名称。
  • username – 密码 – DB用户证书
  • host: port – 指定主机的类型和端口号。
  • database – 数据库名称

示例:

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

上面的例子创建了一个PostgreSQL专用的Dialect对象,和一个Pool对象,当收到连接请求时,在localhost:5432建立一个DBAPI连接。

SQLAlchemy包括许多最常见的数据库的方言实现,如Oracle、MS SQLPostgreSQLSQLite、MySQL等等。为了将数据框架加载到任何数据库,SQLAlchemy提供了一个名为to_sql()的函数。

语法: pandas.DataFrame.to_sql(table_name, engine_name, if_exists, schema, index, chunksize, dtype)

解释:

  • table_name – 必须存储的表的名称
  • engine_name – 连接到数据库的引擎的名称
  • if_exists – 默认情况下,如果table_name已经存在,pandas会抛出一个错误。使用 “REPLACE “将这个数据集替换成旧的,或者使用 “APPEND “将数据添加到现有的表中
  • index – (bool), 为表添加索引列,以唯一地识别每一行

在这个例子中,我们可以使用一个内置的、仅有内存的SQLite数据库,这是最简单的测试方法之一,但随后的程序对SQLAlchemy支持的所有其他数据库都是一样的。你可以在这里下载样本数据集。

让我们首先导入必要的数据集。现在,让我们建立与一个仅有内存的SQLite数据库的连接,并使用pysqlite驱动使其与python交互。接下来,我们将使用to_sql()函数加载要推送到SQLite数据库的数据帧,如图所示。

# import the necessary packages
import pandas
from sqlalchemy import create_engine
  
# Create the engine to connect to the inbuilt 
# sqllite database
engine = create_engine("sqlite+pysqlite:///:memory:")
  
# Read data from CSV which will be
# loaded as a dataframe object
data = pandas.read_csv('superstore.csv')
  
# print the sample of a dataframe
data.head()
  
# Write data into the table in sqllite database
data.to_sql('loan_data', engine)

输出:

使用SQLAlchemy从Pandas数据框架创建一个SQL表

输出

为了检查数据框架是否作为表上传,我们可以使用SQLAlchemy查询该表,如下图所示。

from sqlalchemy import text
  
# establish the connection with the engine object
with engine.connect() as conn:
    
    # let's select the column credit_history
    # from the loan data table
    result = conn.execute(text("SELECT Credit_History FROM loan_data"))
      
    # print the result
    for row in result:
        print(row.Credit_History)

输出:

使用SQLAlchemy从Pandas数据框架创建一个SQL表

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程