第一个问题很奇怪的问题 我安装好了 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
>>>
1
lfzyx 2018-01-18 13:55:20 +08:00 1
flask 下请用 Flask-SQLAlchemy
|
2
syrupofplum 2018-01-18 13:55:42 +08:00
flask 环境用了 virtualenv 吧,看看是不是那个环境没装 mysql
update 没生效是不是没提交事务 |
4
slgz OP @syrupofplum 用了 virtualenv 。 但是,我在 virtualenv 环境下,去执行 hello.py 。也会报错。 update 的时候,就没开启事物呀,为啥还要提交。。
|
5
alvie 2018-01-18 14:03:05 +08:00
@slgz MySQL 连接会有个配置叫做 autocommit,如果 autocommit 设置为 False 不管用不用事务提交变更都需要执行 commit
|
6
ilovebaicai 2018-01-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 |
7
haoji 2018-01-18 14:05:01 +08:00
from flask_sqlalchemy import SQLAlchemy
|
9
slgz OP @ilovebaicai 我单独写了一个文件用 Flask-SQLAlchemy,app.config['SQLALCHEMY_DATABASE_URI']=mysql://username:password@hostname/database 这个是可以了。ye~
|
10
slgz OP @haoji 对对对,就是这个问题。好像在 flask 下,必须,引用 flask_sqlalchemy import SQLAlchemy 才行。。 我刚刚用 from flask.ext.sqlalchemy import SQLAlchemy 提示我 deprecated
|
11
likuku 2018-01-18 14:19:39 +08:00
import 模块都找不到,还是先解决这个吧。
|
13
slgz OP 又有一个新问题, 单独的 model 文件执行没问题,就是,在 hello.py 中 form models import * 的时候就报错了~~
<img src="http://ishwy.me/wp-content/uploads/2018/01/[email protected]"> @likuku @syrupofplum @lfzyx |
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/ |
16
likuku 2018-01-18 15:06:18 +08:00
你当前的 venv 环境下,pip list 看看有没有装好 mysql.connector
|
17
zhd173 2018-01-19 09:45:10 +08:00
第一个问题,用 pycharm 的终端 pip list 看有没有 mysql.connector 的包,或者进 preferences-project interpreter 看有没有对应的包;
|
18
zhd173 2018-01-19 09:45:48 +08:00
第二个问题就是你的 cursor 没有 commit
|
19
slgz OP @likuku 明白了。原来是在 virtualenv 环境下,不行。。 我看 flask 教程,一直以为要在 virtualenv 环境下,才能运行 flask。。 文档没看仔细!
|
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, 干净,又可以轻易管理其依赖,也便于发布。 |