我正在构建一个python脚本,用一个.csv文件填充一个sql数据库,我不断收到一个sql语法错误

我正在构建一个python脚本,用一个.csv文件填充一个sql数据库,我不断收到一个sql语法错误,python,mysql,mariadb,cursor,Python,Mysql,Mariadb,Cursor,我有一个名为“Tournage”的选项卡,但当我尝试使用cursor.execute用csv数据填充它时,我不断得到一个sql语法错误。语法错误在这段代码中: sql_tournage = None for Id in range(len(tournages)): entry = tournages[Id] if Id>0: sql_tournage = '{},({},{},{},{},{},{},{})'.format(sql_tournage, Id_

我有一个名为“Tournage”的选项卡,但当我尝试使用cursor.execute用csv数据填充它时,我不断得到一个sql语法错误。语法错误在这段代码中:

sql_tournage = None
for Id in range(len(tournages)):
    entry = tournages[Id]
    if Id>0:
        sql_tournage = '{},({},{},{},{},{},{},{})'.format(sql_tournage, Id_Lieu, Date_de_debut, Date_de_fin, Localisation_de_la_scene, Code_Postal, Coordonnees_en_X, Coordonnees_en_Y)
    if Id<= 0:
        sql_tournage = '''INSERT INTO Tournage(Id_Lieu, Date_de_debut, Date_de_fin, Localisation_de_la_scene, Code_Postal, Coordonnees_en_X, Coordonnees_en_Y) VALUES{}'''.format(entry)
        sql_tournage = buffer_tournage.format(entry)
sql_tournage = '{};'.format(sql_tournage)
print(sql_tournage)
cursor.execute(sql_tournage)

sql\u tournage=None
对于范围内的Id(len(tournages)):
条目=巡回赛[Id]
如果Id>0:
sql_tournage='{},({},{},{},{},{},{},{},{})格式(sql_tournage,Id_Liue,Date_de_首秀,Date_de_fin,Localization_de_la_scene,Code_Postal,Coordones_en_X,Coordones_en_Y)
如果Id0:
Id_Lieu=第[0]行
Annee=第[1]行
Type_de_tournage=行[2]
Titre=第[3]行
Prenom_Nom_realizateur=行[4]
Producteur=第[5]行
本地化\u de_la_场景=行[6]
邮政编码=第[7]行
首次亮相日期=第[8]行
首次登场日期=datetime.datetime.strtime(首次登场日期,“%d/%m/%Y”).strftime(“%Y/%m/%d”)
日期=第[9]行
Date_de_fin=datetime.datetime.strtime(Date_de_fin,“%d/%m/%Y”).strftime(“%Y/%m/%d”)
Coordonnees_en_X=第[10]行
Coordonnees_en_Y=第[11]行
geo_形状=行[12]
geo_point_2d=行[13]
如果列表中的Producteur不是Producteur:
liste_producteurs.append(Producteur)
如果列表制作中没有标题:
liste_productions.append(Titre)
如果列表中没有Prenom_Nom_Realizateur:
liste_realizateur.append(Prenom_Nom_realizateur)
如果未在列表类型中键入\u de\u tournage:
liste_types.append(Type_de_tournage)
tournage=(身份证、首次登台日期、财务日期、本地化场景、邮政编码、合作单位、合作单位)
如果不是tournage中的tournage:
tournages.append(tournage)
Id_Producteur=liste_producteurs.index(Producteur)+1
Id_Production=liste_productions.index(Titre)+1
Id_realizateur=列表_realizateurs.index(Prenom_Nom_realizateur)+1
Id_Type=liste_types.index(Type_de_tournage)+1
#Id\u Tournage=tournages.index(Id\u-Lieu,Date\u-de\u首秀,Date\u-de\u-fin,本地化\u-de\u-la\u场景,邮政编码,协调人\u-en\u X,协调人\u-en\u-Y,地理形状)+1
lien_film_producteur=(Id_producteur,Id_Production)
如果在留置权电影制作人中没有留置权电影制作人:
留置权电影制片商。附加(留置权电影制片商)
lien_film_realizateur=(Id_realizateur,Id_Production)
如果不是留置权中的留置权电影变现人:
留置权、电影留置权、现实留置权。附加(留置权、电影留置权、现实留置权)
电影类型=(Id类型,Id制作)
如果不是留置权类型中的留置权类型:
留置权电影类型。附加(留置权电影类型)
lien_film_tournage=(Id_Liue,Id_Production)
如果不是lien_film_tournage中的lien_film_tournage:
liens\u film\u tournage.append(liens\u film\u tournage)
sql\u producteur=None
对于范围内的Id_Producteur(len(liste_producteus)):
Producteur=liste_Producteur[Id_Producteur]
如果Id_Producteur>0:
sql_producteur='{},(“{}”)'.格式(sql_producteur,producteur)
其他:
sql_producteur=''插入producteur(producteur)值(“{}”)''。格式(producteur)
sql_producteur='{};'。格式(sql_producteur)
cursor.execute(sql\u producteur)
sql_生产=无
对于范围内的Id_生产(len(liste_生产)):
Titre=liste_productions[Id_Production]
如果Id_生产>0:
sql_production='{},(“{}”)'.格式(sql_production,Titre)
其他:
sql_production=''插入到生产(Titre)值(“{}”)''。格式(Titre)
sql_production='{};'。格式(sql\U产品)
cursor.execute(sql\U生产)
sql\u Realizateur=无
对于范围内的Id_realizateur(len(liste_realizateur)):
Prenom_Nom_realizateur=列表_realizateurs[Id_realizateur]
如果Id\u Realizateur>0:
sql_realizateur='{},(“{}”)'.format(sql_realizateur,Prenom_Nom_realizateur)
其他:
sql_-Realizateur=''插入Realizateur(Prenom_-Nom_-Realizateur)值(“{}”)''。格式(Prenom_-Nom_-Realizateur)
sql_realizateur='{};'。格式(sql_Realizateur)
cursor.execute(sql\u Realizateur)
sql\u类型=无
对于范围内的Id_类型(len(liste_类型)):
Type_de_tournage=liste_types[Id_Type]
如果Id_Type>0:
sql_type='{},(“{}”)'.format(sql_type,type_de_tournage)
其他:
sql_type=''插入类型_Tournage(类型_de_Tournage)值(“{}”)''。格式(类型_de_Tournage)
sql_type='{};'。格式(sql\U类型)
cursor.execute(sql\U类型)
#("{}","{}","{}","{}","{}","{}","{}")
sql_tournage=None
对于范围内的Id(len(tournages)):
条目=巡回赛[Id]
如果Id>0:
sql_tournage='{},({},{},{},{},{},{},{},{})格式(sql_tournage,Id_Liue,Date_de_首秀,Date_de_fin,Localization_de_la_scene,Code_Postal,Coordones_en_X,Coordones_en_Y)
如果Id0:
sql_produire='{},({},{})'.format(sql_produire,条目[0],条目[1])
其他:
sql_produire=''插入到produire(Id_Producteur,Id_Production)值{}''。格式(条目)
sql_produire='{};'。格式(sql_产品)
cursor.execute(sql\U产品)
sql\u Realizer=None
对于范围内的Id(len(liens\u film\u Realizateur)):
条目=留置权、电影、现实主义者[Id]
如果Id>0:
sql_-Realizer='{},({},{})'.format(sql_-Realizer,条目[0],条目[1])
其他:
sql_Realizer=''插入到Realizer(Id_Realizeur,Id_Production)值{}''。格式(条目)
sql_Realizer='{};'。格式(sql实现器)
cursor.execute(sql实现器)
sql_estType=None
对于范围内的Id(len(liens\u film\u type)):
条目=留置权\电影\类型[Id]
如果Id>0:
sql_estType='{},({},{})'.format(sql_estType,条目[0],条目[1])
其他:
sql_estType=''插入到Est_de_Type(Id_Type,Id_Production)值{}''。格式(条目)
sql
import csv
import mariadb
import sys
import datetime as datetime

try:
    film = mariadb.connect(
        host = "localhost",
        #port = ,
        user = "",
        password = "",
        database = "lieux_tournage_paris2"
    )

except mariadb.Error as e:
    print(f"Error connecting to MariaDB Platform: {e}")
    sys.exit(1)

cursor = film.cursor()
#create the MySql database

cursor.execute("DROP TABLE IF EXISTS Produire")
cursor.execute("DROP TABLE IF EXISTS Realiser")
cursor.execute("DROP TABLE IF EXISTS Tourner")
cursor.execute("DROP TABLE IF EXISTS Est_de_Type")
cursor.execute("DROP TABLE IF EXISTS Production")
cursor.execute("DROP TABLE IF EXISTS Type_Tournage")
cursor.execute("DROP TABLE IF EXISTS Realisateur")
cursor.execute("DROP TABLE IF EXISTS Producteur")
cursor.execute("DROP TABLE IF EXISTS Lieu")
cursor.execute("DROP TABLE IF EXISTS Tournage")
#These commands above are there to clear the database of any redundancies

create_table_tournage = '''CREATE TABLE Tournage(
   Id_Lieu VARCHAR(100),
   Date_de_debut DATE,
   Date_de_fin DATE,
   Localisation_de_la_scene VARCHAR(100),
   Code_Postal CHAR(5),
   Coordonnees_en_X DOUBLE,
   Coordonnees_en_Y DOUBLE,
   geo_shape VARCHAR(100),
   geo_point_2d VARCHAR(100),
   PRIMARY KEY(Id_Lieu)
)'''
#   geo_shape VARCHAR(100),

#Id_Tournage INT NOT NULL AUTO_INCREMENT,
create_table_Type_Tournage = '''CREATE TABLE Type_Tournage(
   Id_Type INT NOT NULL  AUTO_INCREMENT,
   Types_de_Tournage VARCHAR(100) NOT NULL,
   PRIMARY KEY(Id_Type)
)'''
create_table_producteur = '''CREATE TABLE Producteur(
   Id_Producteur INT NOT NULL AUTO_INCREMENT,
   PRIMARY KEY(Id_Producteur),
   Producteur VARCHAR(100)
)'''
create_table_realisateur = '''CREATE TABLE Realisateur(
   Id_Realisateur INT NOT NULL AUTO_INCREMENT,
   PRIMARY KEY(Id_Realisateur),
   Prenom_Nom_Realisateur VARCHAR(100)
)'''
create_table_production = '''CREATE TABLE Production(
   Id_Production INT NOT NULL AUTO_INCREMENT,
   PRIMARY KEY(Id_Production),
   Titre VARCHAR(100) NOT NULL
)'''
create_table_Est_de_Type = '''CREATE TABLE Est_de_Type(
   Id_Type INT NOT NULL,
   Id_Production INT NOT NULL,
   PRIMARY KEY(Id_Type,Id_Production ),
   FOREIGN KEY(Id_Type) REFERENCES Type_Tournage(Id_Type),
   FOREIGN KEY(Id_Production) REFERENCES Production(Id_Production)
)'''
create_table_tourner = '''CREATE TABLE Tourner(
   Id_Production INT NOT NULL,
   Id_Lieu VARCHAR(100),
   PRIMARY KEY(Id_Production, Id_Lieu),
   FOREIGN KEY(Id_Production) REFERENCES Production(Id_Production),
   FOREIGN KEY(Id_Lieu) REFERENCES Tournage(Id_Lieu)
)'''
create_table_realiser = '''CREATE TABLE Realiser(
   Id_Production INT NOT NULL,
   Id_Realisateur INT,
   PRIMARY KEY(Id_Production, Id_Realisateur),
   FOREIGN KEY(Id_Production) REFERENCES Production(Id_Production),
   FOREIGN KEY(Id_Realisateur) REFERENCES Realisateur(Id_Realisateur)
)'''
create_table_produire = '''CREATE TABLE Produire(
   Id_Production INT,
   Id_Producteur INT,
   PRIMARY KEY(Id_Production, Id_Producteur),
   FOREIGN KEY(Id_Production) REFERENCES Production(Id_Production),
   FOREIGN KEY(Id_Producteur) REFERENCES Producteur(Id_Producteur)
)'''

cursor.execute(create_table_tournage)
cursor.execute(create_table_producteur)
cursor.execute(create_table_realisateur)
cursor.execute(create_table_production)
cursor.execute(create_table_tourner)
cursor.execute(create_table_realiser)
cursor.execute(create_table_produire)
cursor.execute(create_table_Type_Tournage)
cursor.execute(create_table_Est_de_Type)

liste_producteurs = []
liste_productions = []
liens_film_producteur = []
liste_realisateurs = []
liens_film_realisateur = []
liste_types= []
liens_film_type = []
liste_lieux= []
liste_debut= []
liste_fin= []
liste_localisation= []
liste_CP= []
liste_X= []
liste_Y= []
liste_shape= []
liens_film_tournage = []
tournages=[]
with open('lieux-de-tournage-a-paris.csv', encoding="utf8") as csv_data:
    csv_reader = csv.reader(csv_data, delimiter = ';')
    Id_Tournage = 0
    for row in csv_reader:
        Id_Tournage += 1
        if Id_Tournage>0:
            Id_Lieu = row[0]
            Annee = row[1]
            Type_de_tournage = row[2]
            Titre = row[3]
            Prenom_Nom_Realisateur = row[4]
            Producteur = row[5]
            Localisation_de_la_scene = row[6]
            Code_Postal = row[7]
            Date_de_debut = row[8]
            Date_de_debut = datetime.datetime.strptime(Date_de_debut, "%d/%m/%Y").strftime("%Y/%m/%d")
            Date_de_fin = row[9]
            Date_de_fin = datetime.datetime.strptime(Date_de_fin, "%d/%m/%Y").strftime("%Y/%m/%d")
            Coordonnees_en_X = row[10]
            Coordonnees_en_Y = row[11]
            geo_shape = row[12]
            geo_point_2d = row[13]

            if not Producteur in liste_producteurs:
                liste_producteurs.append(Producteur)

            if not Titre in liste_productions:
                liste_productions.append(Titre)

            if not Prenom_Nom_Realisateur in liste_realisateurs:
                liste_realisateurs.append(Prenom_Nom_Realisateur)

            if not Type_de_tournage in liste_types:
                liste_types.append(Type_de_tournage)

            tournage = (Id_Lieu, Date_de_debut, Date_de_fin, Localisation_de_la_scene, Code_Postal,Coordonnees_en_X, Coordonnees_en_Y)
            if not tournage in tournages:
                tournages.append(tournage)

            Id_Producteur = liste_producteurs.index(Producteur)+1
            Id_Production = liste_productions.index(Titre)+1
            Id_Realisateur = liste_realisateurs.index(Prenom_Nom_Realisateur)+1
            Id_Type = liste_types.index(Type_de_tournage)+1
            #Id_Tournage = tournages.index(Id_Lieu, Date_de_debut, Date_de_fin, Localisation_de_la_scene, Code_Postal,Coordonnees_en_X, Coordonnees_en_Y, geo_shape)+1

            lien_film_producteur = (Id_Producteur, Id_Production)
            if not lien_film_producteur in liens_film_producteur:
                liens_film_producteur.append(lien_film_producteur)

            lien_film_realisateur = (Id_Realisateur, Id_Production)
            if not lien_film_realisateur in liens_film_realisateur:
                liens_film_realisateur.append(lien_film_realisateur)

            lien_film_type = (Id_Type, Id_Production)
            if not lien_film_type in liens_film_type:
                liens_film_type.append(lien_film_type)

            lien_film_tournage = (Id_Lieu, Id_Production)
            if not lien_film_tournage in liens_film_tournage:
                liens_film_tournage.append(lien_film_tournage)

sql_producteur = None
for Id_Producteur in range(len(liste_producteurs)):
    Producteur = liste_producteurs[Id_Producteur]
    if Id_Producteur>0:
        sql_producteur = '{}, ("{}")'.format(sql_producteur, Producteur)
    else:
        sql_producteur= '''INSERT INTO Producteur(Producteur) VALUES  ("{}")'''.format(Producteur)
sql_producteur = '{};'.format(sql_producteur)
cursor.execute(sql_producteur)

sql_production = None
for Id_Production in range(len(liste_productions)):
    Titre = liste_productions[Id_Production]
    if Id_Production>0:
        sql_production = '{}, ("{}")'.format(sql_production, Titre)
    else:
        sql_production= '''INSERT INTO Production(Titre) VALUES ("{}")'''.format(Titre)
sql_production = '{};'.format(sql_production)
cursor.execute(sql_production)

sql_realisateur = None
for Id_Realisateur in range(len(liste_realisateurs)):
    Prenom_Nom_Realisateur = liste_realisateurs[Id_Realisateur]

    if Id_Realisateur>0:
        sql_realisateur = '{}, ("{}")'.format(sql_realisateur, Prenom_Nom_Realisateur)
    else:
        sql_realisateur= '''INSERT INTO Realisateur(Prenom_Nom_Realisateur) VALUES ("{}")'''.format(Prenom_Nom_Realisateur)
sql_realisateur = '{};'.format(sql_realisateur)
cursor.execute(sql_realisateur)

sql_type = None
for Id_Type in range(len(liste_types)):
    Type_de_tournage = liste_types[Id_Type]

    if Id_Type>0:
        sql_type = '{}, ("{}")'.format(sql_type, Type_de_tournage)
    else:
        sql_type= '''INSERT INTO Type_Tournage(Types_de_Tournage) VALUES ("{}")'''.format(Type_de_tournage)
sql_type = '{};'.format(sql_type)
cursor.execute(sql_type)

#("{}","{}","{}","{}","{}","{}","{}")

sql_tournage = None
for Id in range(len(tournages)):
    entry = tournages[Id]
    if Id>0:
        sql_tournage = '{},({},{},{},{},{},{},{})'.format(sql_tournage, Id_Lieu, Date_de_debut, Date_de_fin, Localisation_de_la_scene, Code_Postal, Coordonnees_en_X, Coordonnees_en_Y)
    if Id<= 0:
        sql_tournage = '''INSERT INTO Tournage(Id_Lieu, Date_de_debut, Date_de_fin, Localisation_de_la_scene, Code_Postal, Coordonnees_en_X, Coordonnees_en_Y) VALUES("{}")'''.format(entry)
        sql_tournage = buffer_tournage.format(entry)
sql_tournage = '{};'.format(sql_tournage)
print(sql_tournage)
cursor.execute(sql_tournage)

sql_produire = None
for Id in range(len(liens_film_producteur)):
    entry = liens_film_producteur[Id]
    if Id>0:
        sql_produire = '{},({},{})' .format(sql_produire, entry[0], entry[1])
    else:
        sql_produire= '''INSERT INTO Produire(Id_Producteur, Id_Production) VALUES {}'''.format(entry)
sql_produire = '{};'.format(sql_produire)
cursor.execute(sql_produire)

sql_realiser = None
for Id in range(len(liens_film_realisateur)):
    entry = liens_film_realisateur[Id]
    if Id>0:
        sql_realiser = '{},({},{})' .format(sql_realiser, entry[0], entry[1])
    else:
        sql_realiser= '''INSERT INTO Realiser(Id_Realisateur, Id_Production) VALUES {}'''.format(entry)
sql_realiser = '{};'.format(sql_realiser)
cursor.execute(sql_realiser)

sql_estType = None
for Id in range(len(liens_film_type)):
    entry = liens_film_type[Id]
    if Id>0:
        sql_estType = '{},({},{})' .format(sql_estType, entry[0], entry[1])
    else:
        sql_estType= '''INSERT INTO Est_de_Type(Id_Type, Id_Production) VALUES {}'''.format(entry)
sql_estType = '{};'.format(sql_estType)
cursor.execute(sql_estType)


cursor.close()
film.commit()
film.close()