python - 如何从 python 中执行加载数据命令

标签 python mysql

我将如何执行以下操作?

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/

相关文章:

python - 在 WRDS CRSP 查询中使用来自外部文件的 Python 字典值

python - 执行合并,同时存储所有其他数据并保留原始数据的顺序

python - Pandas : Missing values from Yahoo Finance

python - 如何在 AWS Glue 中运行查询

php - 数据加密传入Mysql数据库再由PHP读取

c# - 如何在 MySQL 文档存储查找表达式中转义字符串?

php - 如何根据条件从数据库加载

python - Instancemethod 对象不可迭代 (AirPi) (Python)

c# - 使用 MySql 在 Asp.Net 中进行 NHibernate 映射

php - PHP变量类型转换问题