使用 Dataframe 的模式创建和插入数据

问题描述 投票:0回答:1

我有一个包含 3300 个属性/列的 csv。我无法在 AZ SQL DB 中手动创建列。我正在寻找使用 Python 自动完成此操作的方法。遇到了 to_sql 和 SQL Alchemy,但看起来不起作用。

错误; ArgumentError:需要字符串或 URL 对象,得到

import pandas as pd
import pyodbc
import urllib
from sqlalchemy import create_engine
fpath = r"C:\Users\***\test.csv"
df = pd.read_csv(fpath)
#print(df.head(5))


conn = pyodbc.connect("DRIVER={ODBC Driver 17 for SQL Server};Server=tcp:XXX.database.windows.net,1433;DATABASE=XXX;UID=XXX;PWD=XXX")#;Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30;")
engine = create_engine(conn)
df.to_sql(name='test',con=engine, if_exists='append',index=False)
python sql-server pandas sqlalchemy azure-sql-database
1个回答
0
投票

您可以使用SQLAlchemy,它会自动创建SQL表并插入所有信息。如果表已经存在,则只会插入数据。我希望这有帮助。

# Create the MySQL connection string
connection_string = f"mysql+pymysql://{mysql_connection_params['user']}:{mysql_connection_params['password']}@{mysql_connection_params['host']}:{mysql_connection_params['port']}/{mysql_connection_params['database']}"

# Create a SQLAlchemy engine
engine = create_engine(connection_string)

# Insert data into the table using pandas to_sql method
with engine.connect() as connection:
    # Specify the connection and use the 'append' method to insert data
    df.to_sql(name=table_name, con=engine, if_exists='append', index=False, chunksize=500)  # Adjust chunksize as needed
© www.soinside.com 2019 - 2024. All rights reserved.