Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.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/8/mysql/61.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/5/fortran/2.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
如何从CSV文件中使用Python在MySQL中创建列名称?_Python_Mysql_Csv - Fatal编程技术网

如何从CSV文件中使用Python在MySQL中创建列名称?

如何从CSV文件中使用Python在MySQL中创建列名称?,python,mysql,csv,Python,Mysql,Csv,我通常使用大型CSV数据集。打开这些文件要花很多时间。我的计划是在不访问csv文件的情况下直接加载csv文件,但在创建表以加载数据时出错 import string import csv import mysql.connector mydb=mysql.connector.connect(host="localhost",user="root",password="password") mycursor = mydb.cursor()

我通常使用大型CSV数据集。打开这些文件要花很多时间。我的计划是在不访问csv文件的情况下直接加载csv文件,但在创建表以加载数据时出错

import string
import csv
import mysql.connector
mydb=mysql.connector.connect(host="localhost",user="root",password="password")
mycursor = mydb.cursor()
with open(r"C:\Users\rcsid\Documents\Office Programs\Working prog\MOCK_DATA.csv") as csvfile:
    csv_reader = csv.DictReader(csvfile)
    line_count = 0
    for row in csv_reader:
        if line_count == 0:
            print(f'create table rd.data ( {" varchar(50), ".join(row)} varchar(50))')
            mycursor.execute(f'create table rd.data ( {" varchar(50), ".join(row)}) varchar(50))')
            line_count += 1
        line_count += 1
print语句给出了以下结果:

创建表rd.data(id varchar(50)、名varchar(50)、姓varchar(50)、电子邮件varchar(50)、布尔varchar(50)、硬币varchar(50))

上述说法似乎是正确的 但是execute语句抛出了一个错误:

编程错误:1064(42000):您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解第1行中使用“varchar(50))”附近的正确语法

这是开始部分。完整的程序将有许多其他检查。想知道如何解决这个错误吗?
PS:Python新手

我可以通过创建一个字符串语句来解决这个问题:

sql_str=f'create table rd.data ( {" varchar(50), ".join(row)} varchar(50))'
mycursor.execute(sql_str)

这解决了问题。

我测试了上面显示的
createtable
语句,它没有错误。我认为错误来自其他SQL语句。@Siddhartha roy choudhury您正在运行哪种服务器类型(如mariadb、mysql)和该服务器的版本?这可能会使一些人更容易重现这个问题……MySQL 8.0和Python 3。这是我目前运行的唯一一条SQL语句,我认为问题在于我用来创建表的Python命令。执行(f'create table rd.data({“varchar(50),”.join(row)})varchar(50)))