- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我无法使用 Flask_SQLAlchemy 在 MySQL 中存储瑞典语字符 :( 我已经尝试了一个星期的解决方案,我真的需要帮助,因为感觉我已经走到了死胡同。我认为它可能是我的工具的版本兼容性有问题,但我不希望如此!我正在尝试使用 Flask、Flask_SQLAlchemy 和 MySQL (5.5.3) 构建一个网站。如果这是无法解决的,我正在考虑将 Flask_SQLAlchemy 更改为其他内容..(我已经上了一门编程类(class)(Python),其余的都是我自己想的,所以如果你能在你的答案中尽可能详细,我会很高兴,也非常感谢你的任何建议!)
(competeEnv) C:\>conda list
# packages in environment at C:\Users\MyName\Anaconda3.1\envs\competeEnv:
#
click 6.6 py27_0
flask 0.11.1 py27_0
Flask-SQLAlchemy 2.1 <pip>
itsdangerous 0.24 py27_0
jinja2 2.8 py27_1
markupsafe 0.23 py27_2
mysql-python 1.2.5 py27_0
pip 9.0.1 py27_0
python 2.7.12 0
setuptools 27.2.0 py27_1
sqlalchemy 1.1.4 py27_0
vs2008_runtime 9.00.30729.1 2
werkzeug 0.11.11 py27_0
wheel 0.29.0 py27_0
(competeEnv) C:\>
这是testAlchemy.py文件中的代码
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app=Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:myPassword@myServer/firstdb'
app.config['SQLALCHEMY_ECHO'] = False
app.config['SQLALCHEMY_TRACK_MODIFICATIONS']=True
app.config['MYSQL_DATABASE_CHARSET'] = 'utf8mb4'
db = SQLAlchemy(app)
class Users(db.Model):
__tablename__='users'
id=db.Column('iduser', db.Integer, primary_key=True)
name=db.Column('column_name', db.String(193))
def __init__(self, name):
self.name=name
def __repr__(self):
return self.name
db.create_all()
db.session.commit()
president1=Users('Obama')
president2=Users('Trump')
db.session.add(president1)
db.session.add(president2)
db.session.commit()
这里应该有一些提示..
(competeEnv) C:\Users\MyName\Anaconda3.1\envs>python
Python 2.7.12 |Continuum Analytics, Inc.| (default, Jun 29 2016, 11:07:13)[MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
Anaconda is brought to you by Continuum Analytics.
Please check out: http://continuum.io/thanks and https://anaconda.org
>>> from testAlchemy import Users, db
>>> db.session.add(Users('Federer'))
>>> db.session.commit()
>>> Users.query.all()
[Obama, Trump, Federer]
>>> db.session.add(Users('ä'))
>>> db.session.commit()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Users\MyName\Anaconda3.1\envs\competeEnv\lib\site-packages\sqlalchemy\orm\scoping.py", line 157, in do
return getattr(self.registry(), name)(*args, **kwargs)
File "C:\Users\MyName\Anaconda3.1\envs\competeEnv\lib\site-packages\sqlalchemy\orm\session.py", line 801, in commit
self.transaction.commit()
File "C:\Users\MyName\Anaconda3.1\envs\competeEnv\lib\site-packages\sqlalchemy\orm\session.py", line 392, in commit
self._prepare_impl()
File "C:\Users\MyName\Anaconda3.1\envs\competeEnv\lib\site-packages\sqlalchemy\orm\session.py", line 372, in _prepare_impl
self.session.flush()
File "C:\Users\MyName\Anaconda3.1\envs\competeEnv\lib\site-packages\sqlalchemy\orm\session.py", line 2019, in flush
self._flush(objects)
File "C:\Users\MyName\Anaconda3.1\envs\competeEnv\lib\site-packages\sqlalchemy\orm\session.py", line 2137, in _flush
transaction.rollback(_capture_exception=True)
File "C:\Users\MyName\Anaconda3.1\envs\competeEnv\lib\site-packages\sqlalchemy\util\langhelpers.py", line 60, in __exit__
compat.reraise(exc_type, exc_value, exc_tb)
File "C:\Users\MyName\Anaconda3.1\envs\competeEnv\lib\site-packages\sqlalchemy\orm\session.py", line 2101, in _flush
flush_context.execute()
File "C:\Users\MyName\Anaconda3.1\envs\competeEnv\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 373, in execute
rec.execute(self)
File "C:\Users\MyName\Anaconda3.1\envs\competeEnv\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 532, in execute
uow
File "C:\Users\MyName\Anaconda3.1\envs\competeEnv\lib\site-packages\sqlalchemy\orm\persistence.py", line 174, in save_obj
mapper, table, insert)
File "C:\Users\MyName\Anaconda3.1\envs\competeEnv\lib\site-packages\sqlalchemy\orm\persistence.py", line 800, in _emit_insert_statements
execute(statement, params)
File "C:\Users\MyName\Anaconda3.1\envs\competeEnv\lib\site-packages\sqlalchemy\engine\base.py", line 914, in execute
return meth(self, multiparams, params)
File "C:\Users\MyName\Anaconda3.1\envs\competeEnv\lib\site-packages\sqlalchemy\sql\elements.py", line 323, in _execute_on_connection
return connection._execute_clauseelement(self, multiparams, params)
File "C:\Users\MyName\Anaconda3.1\envs\competeEnv\lib\site-packages\sqlalchemy\engine\base.py", line 1010, in _execute_clauseelement
compiled_sql, distilled_params
File "C:\Users\MyName\Anaconda3.1\envs\competeEnv\lib\site-packages\sqlalchemy\engine\base.py", line 1146, in _execute_context
context)
File "C:\Users\MyName\Anaconda3.1\envs\competeEnv\lib\site-packages\sqlalchemy\engine\base.py", line 1341, in _handle_dbapi_exception
exc_info
File "C:\Users\MyName\Anaconda3.1\envs\competeEnv\lib\site-packages\sqlalchemy\util\compat.py", line 202, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb, cause=cause)
File "C:\Users\MyName\Anaconda3.1\envs\competeEnv\lib\site-packages\sqlalchemy\engine\base.py", line 1139, in _execute_context
context)
File "C:\Users\MyName\Anaconda3.1\envs\competeEnv\lib\site-packages\sqlalchemy\engine\default.py", line 450, in do_execute
cursor.execute(statement, parameters)
File "C:\Users\MyName\Anaconda3.1\envs\competeEnv\lib\site-packages\MySQLdb\cursors.py", line 205, in execute
self.errorhandler(self, exc, value)
File "C:\Users\MyName\Anaconda3.1\envs\competeEnv\lib\site-packages\MySQLdb\connections.py", line 36, in defaulterrorhandler
raise errorclass, errorvalue
sqlalchemy.exc.OperationalError: (_mysql_exceptions.OperationalError) (1366, "Incorrect string value: '\\x84' for column 'column_name' at row 1") [SQL: u'INSERT INTO users (column_name) VALUES (%s)'] [parameters: ('\x84',)]
>>>
最佳答案
由于您使用的是 Python 2.7,因此您需要指定您的字符串包含 unicode。
>>> db.session.add(Users(u'ä'))
您还可以使用 future 的导入将所有字符串视为 unicode。
from __future__ import unicode_literals
或者,您可以升级您的 Python 版本。 2.7 是最后一个将字符串视为字节而不是 unicode 的版本。
编辑
您还需要更新您的 __repr__
以便它正确处理 unicode。
def __repr__(self):
return self.name.decode('utf-8')
或您要使用的任何编码。
一般来说,您需要确保处理 unicode 的编码和解码。我无法敦促您考虑使用更新版本的 Python。 Python 3 中最大的变化之一解决了这个问题。
关于mysql - Flask_SQLAlchemy,MySQL,存储瑞典字符å,ä,ö?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40707867/
我想知道如何通过 JavaScript 解决这个问题,我正在尝试将 id="needs-confirm-sweden"的复选框字段设为必需,只要将“Sweden”一词插入到输入国家字段。关于如何实现这
我的正则表达式有问题。我已经可以验证正确的瑞典社会安全号码以符合这些标准。 YYMMDDNNNN YYMMDD-NNNN YYYYMMDDNNNN YYYYMMDD-NNNN 但如果用户未满 18 岁
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
我是 PHP 的新手,我正在开发一个非常小的项目来可视化从我们的自动车牌阅读器 (Openalpr) 到我们的叉车的车牌,以显示已到达装载区(区域 2)的货车 一切都在 Ubuntu 16.04.1
我有这个 View 源代码,它是在一台装有 SQL Server 2012 和 Latin1 服务器和数据库整理的机器上编写的: SELECT TOP 100 PERCENT W.Abteilun
我是一名优秀的程序员,十分优秀!