gpt4 book ai didi

postgresql - 在与 PostgreSql 连接的 flask SqlAlchemy 中双重插入记录?

转载 作者:行者123 更新时间:2023-11-29 11:51:16 24 4
gpt4 key购买 nike

我很少遇到这样的问题,即我插入到表 Tbl_CUSTOMER 中的记录与来自 Postgres 的自动 ID 是双重的。

我不知道,但我怀疑这可能是由 postgres vacuum 运行时间引起的。为了确认这一点,我尝试在插入记录的同时运行 postgres vacuum,但没有发现这个问题发生,因此,我无法复制这个问题来找到根本原因并解决问题。

模型.py

class Tbl_CUSTOMER():
ID = db.Column(db.Numeric(25, 9), primary_key=True, autoincrement=True)
PotentialCustomer = db.Column(db.String(12))
FirstNameEn = db.Column(db.String(35))
LastNameEn = db.Column(db.String(35))
FirstNameKh = db.Column(db.String(35))
LastNameKh = db.Column(db.String(35))
Salutation = db.Column(db.String(4))
Gender = db.Column(db.String(6))
DateOfBirth = db.Column(db.String(10))
CountryOfBirth = db.Column(db.String(2))
Nationality = db.Column(db.String(2))
ProvinceOfBirth = db.Column(db.String(3))

views.py

dataInsert =Tbl_CUSTOMER(
PotentialCustomer = request.form['PotentialCustomer'],
FirstNameEn = request.form['FirstNameEn'],
LastNameEn = request.form['LastNameEn'],
FirstNameKh = request.form['FirstNameKh'],
LastNameKh = request.form['LastNameKh'],
Salutation = request.form['Salutation'],
Gender = request.form['Gender'],
DateOfBirth = request.form['DateOfBirth'],
CountryOfBirth = request.form['CountryOfBirth'],
Nationality = request.form['Nationality'],
ProvinceOfBirth = request.form['ProvinceOfBirth']
)

db.session.add(dataInsert)
db.session.commit()

这个问题并不经常发生。那么,问题是什么,我该如何解决这个问题以防止它在未来发生?谢谢。

最佳答案

如果您根据行的所有值使用一些散列函数值创建一个唯一键(或替换您的主键),这可能会帮助您查看此问题何时发生。使用此散列列,您将能够决定当您的系统获得相同值(相同散列)时应该发生什么。例如,一种选择只是忽略新行,保留旧行。其他,就是改写等。

从不同行中获取相同散列值的可能性很小,我什至不会考虑这一点。看这个线程https://crypto.stackexchange.com/questions/1170/best-way-to-reduce-chance-of-hash-collisions-multiple-hashes-or-larger-hash如果您想查看更多详细信息。

关于postgresql - 在与 PostgreSql 连接的 flask SqlAlchemy 中双重插入记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52201971/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com