2017-07-26 10 views
1
import MySQLdb 

db = MySQLdb.connect(host="?", 
       user="root",   
       passwd="?", 
       db="test") 
cursor = db.cursor() 

file = open('...../EM.txt', 'r') 
file_content = file.read() 
file.close() 

query = "INSERT INTO EM VALUES (%s,%s,%s,%s,%s,%s)" 

cursor.execute(query, (file_content,)) 

db.commit() 
db.close() 

このコードをテキストファイルから読み込んでEMテーブルに挿入してみてください...私はこの作業を手助けできますか?テキストファイルからPythonを使ってmysqlテーブルに挿入

+1

は、あなたが経験している何の問題の値は、あなたのSQLクエリでに関連付けられている列を、指定する必要がありますか? – Tgsmith61591

答えて

1

あなたのテキストファイルはどのようにフォーマットされているのかわかりませんが、file.read()はファイル全体を1つの文字列として表示し、6つのフィールドがあるようです。ファイルは6つのタブまたはスペースで区切られたフィールドで構成されていますか?

最初に、file.read()の代わりにfile.readlines()の行にファイルを分割します。次に、あなたがexecutemanyに供給できる行のリストを構築:ようsplit方法は、例えば、タプルに空白のファイルの行を分割し

values = [line.split() for line in file_content] 
cursor.executemany(query, values) 

を、文字列a b cは、タプル('a', 'b', 'c')になっていますリストの理解は、cursor.executemanyに入力して一括挿入を実行できるタプルのリストを生成します。

@Evanが指摘するように、あなたはまた、例えば、

INSERT INTO EM (field, spam, ham, eggs, price, ni) VALUES (%s, %s, %s, %s, %s, %s) 
2

テキストファイル全体をデータベースの文字列に挿入しようとしていますか、または表形式のデータをデータベースにインポートしますか?値を指定した方法に基づいて表形式のデータをインポートするように思えるので、それを私の前提として使用します。

これを行うには、ファイルから各行を読み取り、一度に1行ずつデータベースに挿入する必要があります。また、挿入する列名を指定するために、クエリ構文を更新する必要があります。

import csv 
import MySQLdb 

db = MySQLdb.connect(host='localhost', 
    user='root', 
    passwd='?', 
    db='test') 
cursor = mydb.cursor() 

with open('...../EM.txt') as f: 
    reader = csv.reader(f) 
    for row in reader: 
     cursor.execute("""INSERT INTO testcsv(col1, col2, col3, col4, col5, col6) 
          VALUES(%s, %s, %s, %s, %s, %s) 
         """, row) 

#close the connection to the database. 
mydb.commit() 
cursor.close() 
print "Done" 
+0

ありがとうエバンそれは動作しますが、このエラーで私を止める ""不正な整数値: ''年 '列1の' '2023' '" –

+0

SQLクエリの文字列書式をパラメータ?そのマークを使用してみることはできますか?それでも問題が解決しない場合は、列のデータ型に関する追加情報が役立ちます。 "2023"はその列の無効なデータ型ですか? – Evan

+0

おそらくクエリで2023の代わりにリテラル値 "2023"が挿入されている可能性があります。上記の最新の編集を見てください – Evan

-1

pythonがSQlデータベースと通信するには、まずpsycopg2などのアダプタを使用する必要があります。 psycopg2をインストールしたら、それをインポートする必要があります。コードのシンプルさと機能性を向上させる別のセグメントは、csvリーダーを使用することです。これは単純にcsvをインポートすることで行うことができます。 SQLデータベースはcsvファイルとして保存されるので、これを使うとPythonを使ってcsvファイルを読むのに役立ちます。

あなたがここにCSVリーダーを使用する方法の詳細を見つけることができます:あなたのコードの面では https://docs.python.org/2/library/csv.html

はこれを試してみてください。

import MySQLdb 
import psycopg2 

db = MySQLdb.connect(host="?", 
       user="root",   
       passwd="?", 
       db="test") 
cursor = db.cursor() 

file = open('...../EM.txt', 'r') 
file_content = file.read() 
file.close() 

query = "INSERT INTO EM VALUES (%s,%s,%s,%s,%s,%s)" 

cursor.execute(query, (file_content,)) 

db.commit() 
db.close() 

psycopg2をインストールしてインポートすることは、PythonはあなたがSQLの帖を理解することができるようになります実行しようとしている。

+0

あなたのコードは 'psycopg2'モジュールで何もしません。[MySQLdb](http://mysql-python.sourceforge.net/MySQLdb.html)で十分です。 –

関連する問題