Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 如何在postgresql数据库中复制记录?_Python 3.x_Postgresql_Sqlalchemy_Flask Sqlalchemy - Fatal编程技术网

Python 3.x 如何在postgresql数据库中复制记录?

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'

我有两个表结构和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'
    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条记录。