V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
scott123
V2EX  ›  Python

MySQLdb.connect()怎么传一个字典进去,为什么我按下面的代码传,无法连接

  •  
  •   scott123 · 2016-01-09 21:15:44 +08:00 · 3306 次点击
    这是一个创建于 3052 天前的主题,其中的信息可能已经有所发展或是发生改变。

    db_dict=dict(host="127.0.0.1",user="root",passwd="test",db="test1")
    def insert_one_data(self,sql,*params):
    try:
    conn=MySQLdb.connect(db_dict)
    cur=conn.cursor()
    cur.execute("INSERT INTO admininfo(username,passwd) VALUES(%s,%s)",params)
    conn.commit
    except MySQLdb.Error,e:
    print e
    sys.exit(1)
    finally:
    if conn:
    cur.close()
    conn.close()

    6 条回复    2016-01-09 22:40:20 +08:00
    neoblackcap
        1
    neoblackcap  
       2016-01-09 21:44:40 +08:00
    cur.execute("INSERT INTO admininfo(username,passwd) VALUES(%s,%s)",*params)试试
    scott123
        2
    scott123  
    OP
       2016-01-09 21:55:02 +08:00
    我的主要问题是我要使用 db_dict 作为参数连接到数据库,而不是使用以下的 code
    conn=MySQLdb.connect("127.0.0.1","root","test","test1")
    那么以后我只要修改 db_dict 这个参数就可以连接到不同当数据库了,我见到过别人这么实用过,但是我怎么搜索也是找不到
    Zzzzzzzzz
        3
    Zzzzzzzzz  
       2016-01-09 21:56:24 +08:00   ❤️ 1
    MySQLdb.connect(**db_dict)
    neoblackcap
        4
    neoblackcap  
       2016-01-09 22:17:38 +08:00
    @scott123 支持三楼,刚才急着上厕所,没细看
    scott123
        5
    scott123  
    OP
       2016-01-09 22:23:21 +08:00
    import MySQLdb
    db_dict=dict(host="127.0.0.1",user="root",passwd="dushibing555",db="test1")
    conn=MySQLdb.connect(**db_dict)
    cur=conn.cursor(cursorclass=MySQLdb.cursors.DictCursor)
    cur.execute("SELECT passwd from admininfo WHERE username=%s",('jerry',))
    rows=cur.fetchall()
    print rows

    successfull!
    能解释一下吗?新手不太懂,我知道参数前加两个**代表是参数是字典,那么是不是说如果不加**号解释器无法识别它是一个字典,所以无法正确的解释参数。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1041 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 19:11 · PVG 03:11 · LAX 12:11 · JFK 15:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.