当通过Flask SQLAlchemy
从Flask
脚本保存到SQLite
时,我的整数会正常保存。当保存到Mysql
时,我的整数保存为0
我在Flask
中有一个save函数—当我的dotenv
变量指向SQLite
时,这可以很好地保存数据。当我的dotenv
指向Flask
到Mysql
时,我得到信号的名称(string)
,即id,但是我所有的价格(int)
都被记录为零。奇怪的是,我的解释器在保存之前会将所有的数据打印到控制台上,看起来很好——下面列出了它
我还得到一个信号(如Flask db save signal)来打印出“changes”,它也会像预期的那样显示数字,但是我的数据库没有正确地记录数据
保存功能
def save(signal, zig_user):
signal_to_save = Signal(**signal)
print(f"Signal to save is {signal_to_save}")
print(f"signal {signal}")
print(f"signal takeProfitPrice1: {signal_to_save.takeProfitPrice1}")
zig_user.signals.append(signal_to_save)
db.session.commit()
SQlite和MySQL的控制台输出
Signal to save is <Signal ETHBTC, price: 0.00001200 , targets: 0.000011400.000011900.00001300 from UserID: None>
signal {'type': 'buy', 'exchange': 'binance', 'market': 'ETHBTC', 'limitPrice': '0.00001400', 'price': '0.00001200', 'positionSizePercentage': '2', 'stopLossPrice': '0.00001000', 'takeProfitPrice1': '0.00001140', 'takeProfitPrice2': '0.00001190', 'takeProfitPrice3
': '0.00001300', 'key': 'fb470345fdb1ef832f0a2951f270be82'}
signal takeProfitPrice 10.00001140
保存信号:
[2019-09-25 11:23:49,457] INFO in __init__: Added (2, 'ETHBTC', '0.00001140', '0.00001190', '0.00001300')
然而,当我查看数据库时,我得到的是:
SQLite公司: signal.takeProfitPrice1文件 0.00001140元
MYSQL数据库 signal.takeProfitPrice1文件 0个
我有一个错误:
site-packages\pymysql\cursors.py:170: Warning: (3719, "'utf8' is currently an alias for the character set UTF8MB3, but will be an alias for UTF8MB4 in a future release. Please consider using UTF8MB4 in order to be unambiguou
s.")
更新
我的sql表是这样的:
列:takeProfitPrice1 定义: takeProfitPrice1 int(11)
看起来您正在尝试将浮点数存储在整数列中
Sqlite使用动态类型,列类型只是一个关于存储和比较值的首选方法的提示(有关详细信息,请参见https://www.sqlite.org/datatype3.html;理解亲和力的概念对于使用sqlite是非常必要的。当被要求时,它很乐意插入其他类型的值。MySQL(以及几乎所有其他数据库)的行为方式都不一样,它会将非常小、接近0的数字转换为0。您需要更改表架构,以反映实际存储的数据类型,以便与MySQL一起使用
相关问题 更多 >
编程相关推荐