在Python MySQLdb中使用标志

时间:2014-01-09 00:46:29

标签: python mysql mysql-python

我想使用python MySQLdb访问带有--local-infile标志的远程MySQL服务器,以便能够从本地文件加载数据。 (如本问题Importing CSV to MySQL table returns an error #1148中所述)

我用

db = MySQLdb.connect(host="127.0.0.1", port=3307, user="someuser", passwd="password", db="sql_db")

创建数据库连接。如何使用MySQLdb模拟mysql -u username -p dbname --local-infile

2 个答案:

答案 0 :(得分:0)

您可以将数据库配置放入本地文件,然后在使用时读取它。

的config.ini

[MySQL]
host=192.168.20.28
user=root
password=123456
db_name=ovp_global
charset=utf8

py代码:

import MySQLdb
import ConfigParser

config = ConfigParser.ConfigParser()
config.readfp(open("config.ini", "r"))


def get_connection():
    host = config.get('MySQL', 'host')
    user = config.get('MySQL', 'user')
    passwd = config.get('MySQL', 'password')
    db = config.get('MySQL', 'db_name')
    charset = config.get('MySQL', 'charset')

    return MySQLdb.connect(host=host, user=user, passwd=passwd, db=db, charset=charset)

答案 1 :(得分:0)

我知道最初的问题已经很晚了,但是如果有人来这里寻找相同的问题,您可以这样做:

import mysql.connector

mydb = mysql.connector.connect(
    host="localhost",
    user="root",
    passwd="",
    allow_local_infile=True,
)

在这里您可以检查文档中是否有其他标志:https://dev.mysql.com/doc/connector-python/en/connector-python-connectargs.html

如果要将其设置为数据库配置而不是在连接中,则可以这样做:

mydb = mysql.connector.connect(
    host="localhost",
    user="root",
    passwd="",
)

mycursor = mydb.cursor()

try:
    command = "SET GLOBAL local_infile = 'ON';"
    mycursor.execute(command)
except mysql.connector.errors.DatabaseError:
    pass