如何将数据从csv添加到SQL中的新表?



我有一个这样的CSV:

no_orden    codigo_producto cantidad_orden  precio_cada nombre_producto linea_productos descr   precio_compra   fecha_orden no_cliente  nombre_cliente  tlf direccion   ciudad  estado  codigo_postal   pais
0   10100   S18_1749    30  136.00  1917 Grand Touring Sedan    Vintage Cars    Our Vintage Car models realistically portray a...   86.70   2003-01-06  363 Online Diecast Creations Co.    6035558647  2304 Long Airport Avenue    Nashua  NH  62005   USA
1   10100   S18_2248    50  55.09   1911 Ford Town Car  Vintage Cars    Our Vintage Car models realistically portray a...   33.30   2003-01-06  363 Online Diecast Creations Co.    6035558647  2304 Long Airport Avenue    Nashua  NH  62005   USA

它有17列

因此,我将这个csv转换为数据帧
import pandas as pd
concesionario = pd.read_csv("Coches/ventas.csv")
df = pd.DataFrame(concesionario)

和我想创建两个SQL表。第一个是:

cursor.execute('''
CREATE TABLE Pedido
(no_orden INT PRIMARY KEY NOT NULL, 
codigo_producto CHAR(20), 
cantidad_orden INT NOT NULL, 
precio_cada FLOAT (10), 
nombre_producto TEXT NOT NULL, 
linea_productos TEXT NOT NULL, 
descr TEXT NOT NULL, 
precio_compra FLOAT (10), 
fecha_orden DATE, 
no_cliente INT NOT NULL)
''')

,它可以工作,所以现在我有了这个表保存它

现在我想把数据框中列的信息传递给新表,我把这个:

for index,row in df.itertuples():
    cursor.execute('''
                INSERT INTO Pedido (no_orden, codigo_producto, cantidad_orden, precio_cada, nombre_producto, linea_productos, descr, precio_compra, fecha_orden, no_cliente)
                VALUES (?,?,?,?,?,?,?,?,?,?)
                ''', 
                row.no_orden,
                row.codigo_producto, 
                row.cantidad_orden,
                row.precio_cada,
                row.nombre_producto,
                row.linea_productos,
                row.descr,
                row.precio_compra,
                row.fecha_orden,
                row.no_cliente 
        
                )
conn.commit()

给我这个错误

ValueError: too many values to unpack (expected 2)

也许这是另一种添加信息的方式,但我不知道我的错误

谢谢大家

pandas dataframes有df.to_sql()方法,它可能适合您想要做的事情。

from sqlalchemy import create_engine
engine = create_engine(YOUR_DB)
cols = ['no_orden', 'codigo_producto', 'cantidad_orden', 'precio_cada', 'nombre_producto', 'linea_productos', 'descr', 'precio_compra', 'fecha_orden', 'no_cliente']
df_upload = df[cols] # pick the columns you're interested in
with engine.connect() as con:
    df_upload.to_sql('Pedido', con)

但是@ george -richter是对的——在这种情况下,python和pandas是相当不必要的开销——根据你使用的SQL,有很多更好的方法从文件中加载值。

相关内容

  • 没有找到相关文章

最新更新