首页 > 解决方案 > 我可以在创建后或将数据框导出到 sql 表期间在 sql 表中添加主键约束吗

问题描述

我想使用 pd.read_sql 函数将我的 Excel 数据导入 SQL 数据库。在这里我尝试使用flask sqlalchemy. 我无法创建表,只能将数据从 Excel 传输到 SQL,因为我的 Excel 文件有 1000 多列。根据我所做的研究,现在我想到了使用 Flask migrate Option 在创建后使用 和 之类的函数进行flask db migrate更改flask db upgrade。但没有成功。在创建后或将数据框导出到 SQL 函数期间,我需要关键约束来实现表之间的关系。

此代码用于创建数据库和表:

import pandas as pd
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
#from sqlalchemy.ext.automap import automap_base
#from sqlalchemy.orm import Session
from sqlalchemy import create_engine

df= pd.read_excel(r'C:\Users\z103684\Desktop\new_data.xlsx',sep=';')

df1=df.loc[:, (df != 0).any(axis=0)]
X1 = df1.iloc[0:,0:]
dataset = X1.astype('float32')
dataset['date'] = pd.date_range(start='1/1/2020', periods=len(dataset), freq='D')
dataset=dataset.set_index('date')

dataset.columns = dataset.columns.str.strip().str.lower().str.replace('[', '').str.replace('.', '').str.replace(']','')

dff= pd.read_excel(r'C:\Users\z103684\Desktop\one_column.xlsx',sep=';')

engine = create_engine('sqlite:///Measurements.db')

app=Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI']='sqlite:///Measurements.db'
db=SQLAlchemy(app)

class table1(db.Model):
    __tablename__='table1'
    dataset.to_sql(con=engine, name='table1', if_exists='replace')
    table1.PrimaryKeyConstraint('id')

class table2(db.Model):
    __tablename__='table2'
    dff.to_sql(con=engine,name='table2',if_exists='replace')
    table2.PrimaryKeyConstraint('id1')

@app.route('/')
def index():
    return "Hello flask"

if __name__=="__main__":
    app.run()

标签: pythonsqliteflask-sqlalchemyflask-migratepandasql

解决方案


推荐阅读