Python 连接 mysql 数据的问题请教 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
slgz
V2EX    程序员

Python 连接 mysql 数据的问题请教

  •  
  •   slgz 2018-01-18 13:43:42 +08:00 2504 次点击
    这是一个创建于 2831 天前的主题,其中的信息可能已经有所发展或是发生改变。

    第一个问题很奇怪的问题 我安装好了 mysql.connector 之后,在 cmd 下执行和单独一个文件执行,都没有报错。

    但是在 flask 框架下,import mysql.connector 就会报错 ImportError: No module named mysql.connector。 代码和报错如下。

    求各位大佬解。。研究两天了。。

    ===============================华丽分割线=================================

    第二个问题,就是,我在原生的上面操作。 通过,cursor.rowcount 返回产生或影响的行数。来判断是 1。但是,实际上在数据库中并没有更新到。

    >>> cursor.execute('update user set name = "1111" WHERE id="1" ') >>> print cursor.rowcount 1 >>> 
    21 条回复    2018-01-19 17:09:11 +08:00
    lfzyx
        1
    lfzyx  
       2018-01-18 13:55:20 +08:00   1
    flask 下请用 Flask-SQLAlchemy
    syrupofplum
        2
    syrupofplum  
       2018-01-18 13:55:42 +08:00
    flask 环境用了 virtualenv 吧,看看是不是那个环境没装 mysql
    update 没生效是不是没提交事务
    slgz
        3
    slgz  
    OP
       2018-01-18 13:58:11 +08:00
    @lfzyx 所以,意思是,在 flask 框架下是没办法用远程 sql 操作的吗
    slgz
        4
    slgz  
    OP
       2018-01-18 13:59:10 +08:00
    @syrupofplum 用了 virtualenv 。 但是,我在 virtualenv 环境下,去执行 hello.py 。也会报错。 update 的时候,就没开启事物呀,为啥还要提交。。
    alvie
        5
    alvie  
       2018-01-18 14:03:05 +08:00
    @slgz MySQL 连接会有个配置叫做 autocommit,如果 autocommit 设置为 False 不管用不用事务提交变更都需要执行 commit
    ilovebaicai
        6
    ilovebaicai  
       2018-1-18 14:03:11 +08:00
    使用 MySQLdb,db = MySQLdb.connect("localhost","testuser","test123","TESTDB" )试试,
    或者使用 Flask-SQLAlchemy,app.config['SQLALCHEMY_DATABASE_URI']=mysql://username:password@hostname/database
    haoji
        7
    haoji  
       2018-01-18 14:05:01 +08:00
    from flask_sqlalchemy import SQLAlchemy
    slgz
        8
    slgz  
    OP
       2018-01-18 14:07:15 +08:00
    @alvie 好像,并没有做这个配置。。排除这个问题。。
    slgz
        9
    slgz  
    OP
       2018-01-18 14:08:41 +08:00
    @ilovebaicai 我单独写了一个文件用 Flask-SQLAlchemy,app.config['SQLALCHEMY_DATABASE_URI']=mysql://username:password@hostname/database 这个是可以了。ye~
    slgz
        10
    slgz  
    OP
       2018-01-18 14:10:28 +08:00
    @haoji 对对对,就是这个问题。好像在 flask 下,必须,引用 flask_sqlalchemy import SQLAlchemy 才行。。 我刚刚用 from flask.ext.sqlalchemy import SQLAlchemy 提示我 deprecated
    likuku
        11
    likuku  
       2018-01-18 14:19:39 +08:00
    import 模块都找不到,还是先解决这个吧。
    lfzyx
        12
    lfzyx  
       2018-01-18 14:22:55 +08:00
    @slgz 意思是不要做复杂的事情,轮子已经有了
    slgz
        13
    slgz  
    OP
       2018-01-18 14:45:00 +08:00
    又有一个新问题, 单独的 model 文件执行没问题,就是,在 hello.py 中 form models import * 的时候就报错了~~
    <img src="http://ishwy.me/wp-content/uploads/2018/01/[email protected]">
    @likuku
    @syrupofplum
    @lfzyx
    likuku
        14
    likuku  
       2018-01-18 15:02:36 +08:00
    @slgz

    你在这个位置,python 交互模式下,直接 import mysql 模块呢?

    SQLAlchemy 就先不要管了。


    最近也在折腾 Flask-SQLAlchemy 的确很烦,我是严格按 "Flask 之旅" 里的范例来作的,没这么多毛病:
    https://www.gitbook.com/book/wizardforcel/explore-flask/
    slgz
        15
    slgz  
    OP
       2018-01-18 15:05:26 +08:00
    @likuku 直接 import mysql 模块 是没问题的。
    likuku
        16
    likuku  
       2018-01-18 15:06:18 +08:00
    你当前的 venv 环境下,pip list 看看有没有装好 mysql.connector
    zhd173
        17
    zhd173  
       2018-01-19 09:45:10 +08:00
    第一个问题,用 pycharm 的终端 pip list 看有没有 mysql.connector 的包,或者进 preferences-project interpreter 看有没有对应的包;
    zhd173
        18
    zhd173  
       2018-01-19 09:45:48 +08:00
    第二个问题就是你的 cursor 没有 commit
    slgz
        19
    slgz  
    OP
       2018-01-19 15:02:30 +08:00
    @likuku 明白了。原来是在 virtualenv 环境下,不行。。 我看 flask 教程,一直以为要在 virtualenv 环境下,才能运行 flask。。 文档没看仔细!
    slgz
        20
    slgz  
    OP
       2018-01-19 15:03:08 +08:00
    @zhd173 在 正常 python 环境下是有的。 但是,我是用 virtualenv 环境启动的,所有没有。
    likuku
        21
    likuku  
       2018-01-19 17:09:11 +08:00
    @slgz 你在 virtualenv 再装 mysql 连接器就行了。虚拟环境就当是一个类似 docker 的 平行宇宙 /本地虚拟机。

    推荐看这一部分:
    环境 | Flask 之旅 : https://spacewander.github.io/explore-flask-zh/3-environment.html

    所有安装测试开发都在 virtualenv 下就行了,最好是每个项目都有独立的 virtualenv,
    干净,又可以轻易管理其依赖,也便于发布。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2620 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 40ms UTC 06:48 PVG 14:48 LAX 23:48 JFK 02:48
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86