Python と MySQL コネクタを使用して、国勢調査データを (.csv ファイルから) mysql データベースに動的にロードしようとしています。
エラーが発生する理由がわかりません:
Traceback (most recent call last):
File "miner.py", line 125, in <module>
cursor.execute(add_csv_file, csv_info)
File "/Library/Python/2.7/site-packages/mysql/connector/cursor.py", line 393, in execute
self._handle_result(self._connection.cmd_query(stmt))
File "/Library/Python/2.7/site-packages/mysql/connector/connection.py", line 586, in cmd_query
statement))
File "/Library/Python/2.7/site-packages/mysql/connector/connection.py", line 508, in _handle_result
raise errors.get_exception(packet)
mysql.connector.errors.ProgrammingError: 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '/Users/afink/Documents/Research/Current Papers & Books/Youth Assessm' at line 1
実行前に出力された文字列は、同じユーザーの MySQL コマンドライン インターフェイスで正常に機能します。
簡単な問題のようですが、行き詰まっています。
def db_connect():
config = {
'user': 'username',
'password': 'pass',
'host': 'localhost',
'database': 'uscensus',
'raise_on_warnings': True,
}
from mysql.connector import errorcode
try:
cnx = mysql.connector.connect(**config)
return cnx
except mysql.connector.Error as err:
if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
print("Something is wrong with your user name or password")
elif err.errno == errorcode.ER_BAD_DB_ERROR:
print("Database does not exist")
else:
print(err)
else:
cnx.close()
cursor = cnx.cursor()
os.chdir("./")
for files in glob.glob("*.csv"):
add_csv_file = ('''load data local infile '%(cwd)s/%(file_name)s' into table %(table_name)s
columns terminated by ','
optionally enclosed by '\"'
escaped by '\"'
lines terminated by '\\n';''')
# Insert CSV file information
csv_info = {
'cwd': os.getcwd(),
'file_name': files,
'table_name': 'SF1_' + files[2:-8],
}
print add_csv_file % csv_info # Temporary Debug
cursor.execute(add_csv_file, csv_info)
# Make sure data is committed to the database
cnx.commit()
cursor.close()
cnx.close()
事前に助けてくれてありがとう!