Python __init_;()正好接受一个参数MYSQL
我知道有人问过同样标题的问题,但根据给出的解决方案,我无法找出问题所在。我正在使用argparser连接到数据库并获取数据。这里Python __init_;()正好接受一个参数MYSQL,python,mysql,Python,Mysql,我知道有人问过同样标题的问题,但根据给出的解决方案,我无法找出问题所在。我正在使用argparser连接到数据库并获取数据。这里 import os import logging import argparse import mysql.connector def main(): parser = create_parser() args = parser.parse_args() query_result = get_name_and_id(args.user, ar
import os
import logging
import argparse
import mysql.connector
def main():
parser = create_parser()
args = parser.parse_args()
query_result = get_name_and_id(args.user, args.password, args.host, args.database)
def create_parser():
parser = argparse.ArgumentParser(description="Require database credentials")
parser.add_argument("--host", required="True", metavar="[host]", dest='host', help="Database host")
parser.add_argument("--database-name", required="True", metavar="[database]", dest='database', help="Name of the database to connect to.")
parser.add_argument("--user-name", metavar="[user]", dest='user', required="True")
parser.add_argument("--password", required="True", metavar="[password]", dest='password')
return parser
def get_name_and_id(user,password,host,database):
con = mysql.connector.connect(user, password, host, database)
cursor = con.cursor()
query = ("SELECT id, name FROM some_table")
cursor.execute(query)
name_id_list = dict()
for id, name in cursor:
name_id_list[id] = name
return name_id_list
if __name__ == "__main__":
main()
要运行这个程序,我使用以下命令
python test\u database.py--host somehost--database somedb--user name myuser name--password my password
这是stacktrace:
文件“test_arg_parsing.py”,第59行,在
main()文件“test_arg_parsing.py”,第14行,main
query_result=get_name_和_id(args.user、args.password、args.host、args.database)文件“test_arg_parsing.py”,第32行,在
获取\u排队器\u数据
con=mysql.connector.connect(用户、密码、主机、数据库)文件“/Library/Python/2.7/site packages/mysql/connector/init.py”,
第179行,连接中
返回MySQLConnection(*args,**kwargs)文件“/Library/Python/2.7/site packages/mysql/connector/connection.py”,
第57行,在init
super(MySQLConnection,self)。init(*args,**kwargs)类型错误:init()正好接受1个参数(给定5个)
我不明白的是,它是否在抱怨MySQLConnectioninit函数?还是我运行的命令不对?我已经使用mysql连接器成功连接到同一个数据库。但我现在想将凭据作为参数传递。这里出了什么问题?这些必须是关键字参数。尝试:
con = mysql.connector.connect(user=user, password=password, host=host, database=database)
这些必须是关键字参数。尝试:
con = mysql.connector.connect(user=user, password=password, host=host, database=database)
首先,
get\u name\u和\u id
函数应该接受连接参数:
def get_name_and_id(user, password, host, database):
def get_name_and_id(**kwargs):
con = mysql.connector.connect(**kwargs)
# ...
然后,根据,您需要指定关键字参数:
def get_name_and_id(user, password, host, database):
def get_name_and_id(**kwargs):
con = mysql.connector.connect(**kwargs)
# ...
或者,您可以只传递任意关键字参数:
def get_name_and_id(user, password, host, database):
def get_name_and_id(**kwargs):
con = mysql.connector.connect(**kwargs)
# ...
用法:
def main():
parser = create_parser()
args = parser.parse_args()
query_result = get_name_and_id(user=args.user,
password=args.password,
host=args.host,
database=args.database)
首先,
get\u name\u和\u id
函数应该接受连接参数:
def get_name_and_id(user, password, host, database):
def get_name_and_id(**kwargs):
con = mysql.connector.connect(**kwargs)
# ...
然后,根据,您需要指定关键字参数:
def get_name_and_id(user, password, host, database):
def get_name_and_id(**kwargs):
con = mysql.connector.connect(**kwargs)
# ...
或者,您可以只传递任意关键字参数:
def get_name_and_id(user, password, host, database):
def get_name_and_id(**kwargs):
con = mysql.connector.connect(**kwargs)
# ...
用法:
def main():
parser = create_parser()
args = parser.parse_args()
query_result = get_name_and_id(user=args.user,
password=args.password,
host=args.host,
database=args.database)
糟糕的是,我在发布问题时错过了函数的参数。我会更新的,真不敢相信我这么粗心。谢谢alexce@user3527975事实上,我发现这个mysql连接器的连接函数行为令人困惑-为什么他们只使用关键字参数…谢谢。在第二个选项中,您使用的是args.user,args.password。Args是main方法的本地参数。糟糕的是,我在发布问题时错过了函数的参数。我会更新的,真不敢相信我这么粗心。谢谢alexce@user3527975事实上,我发现这个mysql连接器的连接函数行为令人困惑-为什么他们只使用关键字参数…谢谢。在第二个选项中,您使用的是args.user,args.password。Args是本地的主要方法。是的。这就是我错过的。谢谢,是的。这就是我错过的。谢谢