如何在SQL中将数据框另存为表

aker

我有一个SQL Server,上面有要使用熊猫更改数据的数据库。我知道如何使用pyodbc将数据获取到DataFrame中,但是然后我不知道如何将DataData返回我的SQL Server中。

我试图用sqlalchemy创建一个引擎并使用该to_sql命令,但是由于我的引擎永远无法正确连接到我的数据库,因此无法正常工作。

import pyodbc
import pandas
server = "server"
db = "db"
conn = pyodbc.connect('DRIVER={SQL Server};SERVER='+server+';DATABASE='+db+';Trusted_Connection=yes')
cursor = conn.cursor()
df = cursor.fetchall()
data = pandas.DataFrame(df)
conn.commit()
Rzskhr

您可以使用pandas.DataFrame.to_sql将数据帧插入SQL Server。此方法支持SQLAlchemy支持的数据库

这是一个示例,您可以如何实现此目的:

from sqlalchemy import create_engine, event
from urllib.parse import quote_plus
import logging
import sys
import numpy as np
from datetime import datetime, timedelta

# setup logging
logging.basicConfig(stream=sys.stdout, 
                filemode='a', 
                format='%(asctime)s.%(msecs)3d %(levelname)s:%(name)s: %(message)s', 
                datefmt='%m-%d-%Y %H:%M:%S', 
                level=logging.DEBUG)
logger = logging.getLogger(__name__)    # get the name of the module

def write_to_db(df, database_name, table_name):
    """
    Creates a sqlalchemy engine and write the dataframe to database
    """
    # replacing infinity by nan
    df = df.replace([np.inf, -np.inf], np.nan)

    user_name = 'USERNAME'
    pwd = 'PASSWORD' 
    db_addr = '10.00.000.10'
    chunk_size = 40 

    conn =  "DRIVER={SQL     Server};SERVER="+db_addr+";DATABASE="+database_name+";UID="+user_name+";PWD="+pwd+""
    quoted = quote_plus(conn)
    new_con = 'mssql+pyodbc:///?odbc_connect={}'.format(quoted)

    # create sqlalchemy engine
    engine = create_engine(new_con)

    # Write to DB
    logger.info("Writing to database ...")
    st = datetime.now() # start time
    # WARNING!! -- overwrites the table using if_exists='replace'
    df.to_sql(table_name, engine, if_exists='replace', index=False, chunksize=chunk_size)
    logger.info("Database updated...")
    logger.info("Data written to '{}' databsae into '{}' table ...".format(database_name, table_name))
    logger.info("Time taken to write to DB: {}".format((datetime.now()-st).total_seconds()))

调用此方法应将您的数据帧写入数据库,请注意,如果数据库中已经存在同名的表,它将替换该表。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将Python数据框另存为Teradata中的表

如何在BigQuery中将查询另存为分区表?

如何在Excel VBA中将每个工作表的首页另存为PDF

如何在php中将json字节[]另存为pdf

如何在python中将列表另存为numpy数组?

如何在Chrome中将网页另存为MHT?

如何在Eclipse中将工作区另存为...?

如何在Redis中将列表另存为值

如何在Swift中将数组另存为json文件?

如何在python中将词云另存为.png?

如何在Firestore网站中将值另存为double?

如何在Notepad ++中的“另存为”对话框中编辑“另存为类型:”列表?

将Spark数据框另存为Hive中的动态分区表

将熊猫数据框的“ Out []”表另存为一个图

如何打开另存为对话框并另存为PDF

Excel另存为框

如何在 VBA 中将公式另存为字符串

如何在Spark中将复杂的json或复杂的对象另存为Parquet?

如何在MATLAB中将3D动画线另存为视频或gif

如何在C#中将类类型另存为变量?

如何在Excel中将数字另存为字符串?

如何在 Apache POI 中将 xslm 文件另存为 xslx

如何在Go中将整个字符串另存为txt文件?

如何在Unity3d中将资产另存为fbx?

如何在C#中将列表中的元素数量另存为变量?

如何在2018年的Julia中将矩阵另存为图像

如何在GIMP 2.8.16中将gif的图层另存为单独的文件?

如何在scala spark中将字符串另存为json

如何在Python 3中将Turtle画布另存为图像(.png或.jpg)