回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我处理巨大的CSV数据文件,并计划在使用Python将数据逐行插入MySQL之前进行一些检查。由于数据文件相当大,打开文件需要花费大量时间。因此,我的目标是在不手动分析的情况下加载它们。我将使用Python为我做分析。我已经开始编写代码,但在插入数据时遇到了问题。我确信这是一个基本的问题,我还没有弄清楚,因为我对Python有点陌生。
演示数据:</p>
<pre><code>id,first_name,last_name,email,boole,coin
1,Emilio,Pettie,epettie0@craigslist.org,true,1Lj8Z4Em68hwqRAUXZKW7C7h2KgH5cGpTe
2,Raynard,Fairholme,rfairholme1@wisc.edu,true,1AEwLuECKYD1Bb6EGaBQC1TJS1mtvHBmy3
3,Zonda,Bampkin,zbampkin2@google.nl,false,14AHvnRjXExdgfqZBnWUyVi7aWZR8SFBoL
4,Thurstan,Sherville,tsherville3@umich.edu,true,19iiiJ53zxmJnbmW7gKH2hoMwpiaqkit8E
5,Jonathan,Jewkes,jjewkes4@nba.com,false,18E22TTK68ukQVLWK6oZNfFbzP2uHqaW7o
6,Dolores,Carmichael,dcarmichael5@blogtalkradio.com,false,15BBePy5J3WY1QQLTjA79iYQMjDRubv2BD
7,Kleon,Wesker,kwesker6@buzzfeed.com,false,1NfYtAuq6M3cXGhDJuDBnCjdEBRSKsfRVJ
8,Laureen,Writtle,lwrittle7@tripadvisor.com,true,14UgbrWz9wi2UptALs2dFeQRdUiMaLee57
9,Gypsy,Coombes,gcoombes8@home.pl,true,1Hn3JBtjytwbBMVJgM7ixAi1sXf56KFM3R
10,Kevina,Boulger,kboulger9@sakura.ne.jp,false,1GABbcoRTVsX1qzD8uiGtsPtuD1kvzokK1
</code></pre>
<p>守则:</p>
<pre><code>import string
import csv
import mysql.connector
mydb=mysql.connector.connect(host="localhost",user="root",password="password",autocommit=True)
mycursor = mydb.cursor()
sql_str=''
sql_str1=''
mycursor.execute("drop table if exists rd.data")
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:
sql_str=f'create table rd.data ( {" varchar(50), ".join(row)} varchar(50))'
mycursor.execute(sql_str)
sql_str1=f'insert into rd.data values ( {", ".join(row)})'
print(sql_str1)
mycursor.execute(sql_str1)
line_count += 1
</code></pre>
<p>我能够创建表格和标题部分。但是我无法加载数据。<code>print(sql_str1)</code>输出为:</p>
<pre><code>insert into rd.data values ( id, first_name, last_name, email, boole, coin)
insert into rd.data values ( id, first_name, last_name, email, boole, coin)
insert into rd.data values ( id, first_name, last_name, email, boole, coin)
insert into rd.data values ( id, first_name, last_name, email, boole, coin)
</code></pre>
<p>对于所有值,插入的数据都为空。请告诉我如何在csv中捕获数据。我知道这可能是一个基本语法。我也知道语法<code>cur.execute('INSERT INTO table (columns) VALUES(%s, ....)', row)</code>,但不想使用它,因为我需要打开文件来检查头部分</p>