Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-如何创建SQL;“创建表格”;基于DF和其中数据的语句?_Python_Sql_Dataframe - Fatal编程技术网

Python-如何创建SQL;“创建表格”;基于DF和其中数据的语句?

Python-如何创建SQL;“创建表格”;基于DF和其中数据的语句?,python,sql,dataframe,Python,Sql,Dataframe,我将数据(从CSV或Excel)加载到Python的Panda DF中 import pandas as pd df = pd.read_csv('table1.csv') 数据如下所示: c1,c2,c3 1,abc,1.5 2,bcd,2.53 3,agf,3.571 如何使SQLcreate table语句基于数据帧中的数据,在本例中,数据帧是: create table table1 (c1 int, c2 varchar(3), c3 float); 谢谢 您可以为正在处理的任何

我将数据(从CSV或Excel)加载到Python的Panda DF中

import pandas as pd
df = pd.read_csv('table1.csv')
数据如下所示:

c1,c2,c3
1,abc,1.5
2,bcd,2.53
3,agf,3.571
如何使SQL
create table语句基于数据帧中的数据,在本例中,数据帧是:

create table table1 (c1 int, c2 varchar(3), c3 float);

谢谢

您可以为正在处理的任何其他数据类型添加循环。结果应该是包含列名和数据类型的CREATETABLE语句

#Get rid of invalid characters in the column names
Col_list = []
for i in range(df.shape[1]):   
    Col_Name = df.columns[i].replace(" - ", "_").replace(" ", "_").replace("&", "and") # Some characters were unacceptable
    Col_list.append(Col_Name)
df.columns = Col_list


#This function creates a create table statement out of my dataframe columns and data types
Text_list = []
for i in range(df.shape[1]):   
    Col_Name = df.columns[i]
    Python = df.convert_dtypes().dtypes[i]  # Most of the data types were listed as object so this reassigns them
    if Python == float:
        Oralce = "FLOAT"
    elif Python == 'datetime64[ns]':
        Oracle = 'DATE'
    elif Python == 'Int64':
        Oracle = "NUMBER"
    else:
        Oracle = "VARCHAR2(50)"
    Text_list.append(Col_Name)
    Text_list.append(' ')
    Text_list.append(Oracle)
    if i < (df.shape[1] - 1): 
        Text_list.append(", ")
Text_Block = ''.join(Text_list)
Text_Block

cursor = conn.cursor()

drop = """
drop TABLE tableName
"""
create = """
    CREATE TABLE tableName (
    {}    )
""".format(Text_Block)

cursor.execute(drop)
cursor.execute(create)
cursor.execute("commit")
cursor.close()
#清除列名中的无效字符
Col_list=[]
对于范围内的i(df.shape[1]):
Col_Name=df.columns[i].replace(“-”,“”).replace(“,“”).replace(“&”,“and”)#某些字符不可接受
列列表。追加(列名称)
df.columns=列列表
#此函数使用我的dataframe列和数据类型创建CREATETABLE语句
Text_list=[]
对于范围内的i(df.shape[1]):
Col_Name=df.columns[i]
Python=df.convert_dtypes().dtypes[i]#大多数数据类型都列为对象,因此这会重新分配它们
如果Python==浮点:
Oralce=“浮动”
elif Python=='datetime64[ns]':
甲骨文=‘日期’
elif Python=='Int64':
Oracle=“编号”
其他:
Oracle=“VARCHAR2(50)”
文本列表。追加(列名称)
文本列表。附加(“”)
Text_list.append(Oracle)
如果i<(df.形状[1]-1):
文本列表。追加(“,”)
Text\u Block=''.join(Text\u列表)
文本块
游标=连接游标()
drop=”“”
删除表tableName
"""
创建“”
创建表tableName(
{}    )
“”格式(文本块)
cursor.execute(drop)
cursor.execute(创建)
cursor.execute(“commit”)
cursor.close()

当您可以使用
df.to_sql
并自己创建表时,为什么要生成一个语句来创建表?@coldspeed-我需要创建一个逻辑,它将遍历1000个CSV文件,并为每个CSV文件创建一个-create:1)create table语句2)针对mysql db执行create table语句,3)导入每个CSV文件数据从DF(或直接从CSV)进入一个新创建的MySql表。就像我说的。您需要生成sql语句来执行此操作的原因是什么?为什么你不能做其他人选择做的正常事情?@coldspeed-trued
df.to_sql
-除了错误之外,没有看到任何sql从中出来。