我将如何执行以下操作?
import MySQLdb
conn = MySQLdb.connect (
host = settings.DATABASES['default']['HOST'],
port = 3306,
user = settings.DATABASES['default']['USER'],
passwd = settings.DATABASES['default']['PASSWORD'],
db = settings.DATABASES['default']['NAME'],
charset='utf8')
cursor = conn.cursor()
cursor.execute('SELECT COUNT(*) FROM auth_user')
print cursor.fetchall() # this prints, so I know the connection is correct
cursor.execute('''
LOAD DATA INFILE 'a_short.csv' INTO TABLE export
FIELDS TERMINATED BY '|' ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES;
''')
当我尝试上述操作时,出现“拒绝访问”错误,但我认为这与尝试从光标内部执行 LOAD DATA
命令更相关。执行此操作的正确方法是什么?
更新:这似乎是用户在 Amazon RDS 中的权限限制(无"file"权限)。这是解决此问题的一种方法:how to 'load data infile' on amazon RDS? .
最佳答案
为了让load file
正常工作,您的数据库用户帐户需要MySQL 的file_priv
。数据库还需要对相关文件具有读取权限。
在此查询中,指示数据库在数据库的文件系统上查找 a_short.csv
,这可能会生成如下路径:/var/mysql/a_short.csv
。如果此 csv 文件位于系统的 python 端,则 python 需要打开该文件并填充 MySQL 数据库。
关于python - 如何从 python 中执行加载数据命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39755033/