Python 3.x 如何在postgresql数据库中复制记录?
我有两个表结构和Bandit页面:Python 3.x 如何在postgresql数据库中复制记录?,python-3.x,postgresql,sqlalchemy,flask-sqlalchemy,Python 3.x,Postgresql,Sqlalchemy,Flask Sqlalchemy,我有两个表结构和Bandit页面: class Structure(db.Model): __tablename__ = 'structure' arm_id = db.Column(db.Integer, primary_key=True, unique=True) page_url = db.Column(db.String()) class Bandit_pages(db.Model): __tablename__ = 'bandit_pages'
class Structure(db.Model):
__tablename__ = 'structure'
arm_id = db.Column(db.Integer, primary_key=True, unique=True)
page_url = db.Column(db.String())
class Bandit_pages(db.Model):
__tablename__ = 'bandit_pages'
campaign_id = db.Column(db.String())
arm_id = db.Column(db.Integer)
status = db.Column(db.Boolean, default=False)
__table_args__ = (
PrimaryKeyConstraint('campaign_id', 'arm_id'),
{},)
这是正在保存的记录
select * from structure ;
page_url | arm_id
--------------------------------------------+--------
XYZ.php | 0
mt3 | 1
(2 rows)
proj=# select * from bandit_pages ;
campaign_id | arm_id | status
-------------+--------+--------
0 | 0 | t
72297098 | 1 | f
(2 rows)
我想将这些值存储为
proj=# select * from bandit_pages ;
campaign_id | arm_id | status
-------------+--------+--------
0 | 0 | t
0 | 0 | f
72297098 | 0 | t
72297098 | 1 | f
(4 rows)
我的代码是:
def init(self):
#code here
self.bandit_pages = {}
try:
for arm_id in self.structure:
new_bandit_page = Bandit_pages(campaign_id=str(arm_id), arm_id=arm_id, status=True)
db.session.add(new_bandit_page)
db.session.commit()
except Exception as e:
print("exception in BANDPAGEINIT insert", e)
db.session.rollback()
我尝试添加一个额外的行new\u bandit\u page\u 1=bandit\u pages(campaign\u id=str(arm\u id),arm\u id=arm\u id,status=True)
并使用db.session.add添加它(new\u bandit\u page\u 1),但它没有被添加?没有添加的原因可能是什么?还有其他方法可以添加吗?请帮忙
编辑:我还尝试在db.session中添加一行额外的
new\u bandit\u page\u 1=bandit\u pages(campaign\u id=str(arm\u id),arm\u id=arm\u id,status=True)
。添加所有([new\u bandit\u page,new\u bandit\u page\u pages\u 1]),这也没有任何帮助。看起来两个记录都有相同的主键str(arm\u id),arm\u id
,因此,会话将不会同时添加这两个内容。@snakecharmerb谢谢您的提示。我把它做成了一个唯一的密钥,因为我没有一种方法可以用来保存数据。在我删除了唯一密钥之后,我能够将它们存储在数据中。然而,对于Campaign_id=0,它只给了我status=True,但我希望它是false。当我添加额外的行(在编辑中)时,它给了我4条记录。看起来这两条记录都有相同的主键str(arm\u id),arm\u id
,因此会话将不会同时添加这两条。@snakecharmerb谢谢提示。我把它做成了一个唯一的密钥,因为我没有一种方法可以用来保存数据。在我删除了唯一密钥之后,我能够将它们存储在数据中。然而,对于Campaign_id=0,它只给了我status=True,但我希望它是false。当我添加额外的行(在编辑中)时,它给了我4条记录。