-2

Pythonプログラミングを使用したデータベース処理は初めてです。
Pythonプログラミングを使用して、STUDENT T_NAME、STUDENT_MARKSで構成される生のテキストファイルを読み取りたいです。これらはパイプ記号で区切られています(以下の例のように)、このデータを学生テーブルにプッシュしたいのですが、それぞれのデータ値を持つ2つの列(STUDENT_NAME、STUDENT_MARKS)で構成されています。

入力データファイルは次のようになります(このような数千のレコードで構成されています)、私の入力ファイルは.Datファイルで、レコードのみで始まり、各行には0以上のレコードが含まれます(レコードの固定数はありません各行に)、他にキーワードはありません::

レコード STUDENT_NAME| ジャック | STUDENT_MARKS|200| STUDENT_NAME| クラーク |STUDENT_MARKS|200| STUDENT_NAME| アジキル | STUDENT_MARKS|30| STUDENT_NAME| Aqqm | STUDENT_MARKS|200| STUDENT_NAME| ジョーン | ジョン | STUDENT_MARKS|200| STUDENT_NAME| ジェイク | STUDENT_MARKS|100|

出力 mysql テーブル table::

STUDENT_NAME| STUDENT_MARKS

 jack   |   200
 clark  |   200

.......

効率的な方法でファイルを読み込んでデータをプッシュするようにアドバイスしてください。誰かがこれを達成するためのスクリプトを教えてくれたら、とても感謝しています。

4

2 に答える 2

2

新規参入者に親切にするという精神で、あなたが始めるためのいくつかのコード:

# assuming your data is exactly as in the original question
data = '''records STUDENT_NAME| jack | STUDENT_MARKS|200| STUDENT_NAME| clark |STUDENT_MARKS|200| STUDENT_NAME| Ajkir | STUDENT_MARKS|30| STUDENT_NAME| Aqqm | STUDENT_MARKS|200| STUDENT_NAME| jone | STUDENT_MARKS|200| STUDENT_NAME| jake | STUDENT_MARKS|100|'''

data  = data.split('|')

for idx in range(1, len(data), 4):
    # every second item in the list is a name and every fourth is a mark
    name = data[idx].strip() # need to add code to check for duplicate names
    mark = int(data[idx+2].strip()) # this will crash if not a number
    print(name, mark) # use these values to add to the database

このチュートリアルを使用してSQLiteを試して、Pythonでこのようなデータベースを使用する方法を学ぶことをお勧めします。また、ファイル入力に関するこのチュートリアルが役立つ場合があります。

これから始めて、いくつかのコードで戻ってきたいと思うかもしれません。

于 2012-07-28T18:31:03.240 に答える
2
# import mysql module
import MySQLDB

# import regular expression module
import re

# set file name & location (note we need to create a temporary file because 
# the original one is messed up)

original_fyle = open('/some/directory/some/file.csv', 'r')
ready_fyle = open('/some/directory/some/ready_file.csv', 'w')


# initialize & establish connection 
con = MySQLdb.connect(host="localhost",user="username", passwd="password",db="database_name") 
cur = con.cursor()

# prepare your ready file 

for line in original_fyle:
    # substitute useless information this also creates some formatting for the 
    # actuall loading into mysql
    line = re.sub('STUDENT_NAME|', '\n', line) 
    line = re.sub('STUDENT_MARKS|', '', line)
    ready_fyle.write(line)

# load your ready file into db

# close file
ready_file.close()

# create a query 
query = 'load data local infile "/some/directory/some/ready_file.csv" into table table_name field terminated by "|" lines terminated by "\n" '
# run it 
cur.execute(query)
# commit just in case 
cur.commit()
于 2012-07-28T18:28:53.067 に答える