Python 3.5 在另一个模式上将记录插入 Postgres table
Python 3.5 insert record into Postgres table on another schema
.....我的 postgres 数据库 class ......
class User(db.Model):
"""docstring for User"""
__tablename__ = 'user'
user_name = db.Column(db.String(45), primary_key=True)
email = db.Column(db.String(45))
def __init__(self, user_name, email):
super(User, self).__init__()
self.user_name = user_name
self.email = email
.....尝试插入时我收到错误消息
@app.route('/add_user', methods=['POST'])
def add_user():
user = User(user_name = request.form['user_name'], email = request.form['email'])
print(user.user_name, user.email)
db.session.add(user)
db.session.commit()
return render_template('get_address.html')
sqlalchemy.exc.ProgrammingError: (psycopg2.ProgrammingError) relation "user" does not exist LINE 1: INSERT INTO "user" (user_name, email) VALUES ('as', 'sd') ^ [SQL: 'INSERT INTO "user" (user_name, email) VALUES (%(user_name)s, %(email)s)'] [parameters: {'email': 'sd', 'user_name': 'as'}]
.....正在使用多个模式
.....上面的 class 在名为 users
的模式中
我认为问题是 table 名称解析:即在数据库中 table 'users' 在哪里?我假设必须使用 __tablename__ = 'users.user'
的模式名称来限定 table 'users'。这不起作用。
...产生的错误是:
sqlalchemy.exc.ProgrammingError: (psycopg2.ProgrammingError) relation "users.user" does not exist LINE 1: INSERT INTO "users.user" (user_name, email) VALUES ('po', 'p... ^ [SQL: 'INSERT INTO "users.user" (user_name, email) VALUES (%(user_name)s, %(email)s)'] [parameters: {'email': 'po', 'user_name': 'po'}]
我在 SqlAlchemy.org 网站或其他任何地方都找不到任何关于要使用的结构或如何解决这个问题的信息。
有什么想法吗?
您可以使用 schema
argument to Table
:
指定架构名称
class User(db.Model):
...
__table_args__ = {
"schema": "users"
}
.....我的 postgres 数据库 class ......
class User(db.Model):
"""docstring for User"""
__tablename__ = 'user'
user_name = db.Column(db.String(45), primary_key=True)
email = db.Column(db.String(45))
def __init__(self, user_name, email):
super(User, self).__init__()
self.user_name = user_name
self.email = email
.....尝试插入时我收到错误消息
@app.route('/add_user', methods=['POST'])
def add_user():
user = User(user_name = request.form['user_name'], email = request.form['email'])
print(user.user_name, user.email)
db.session.add(user)
db.session.commit()
return render_template('get_address.html')
sqlalchemy.exc.ProgrammingError: (psycopg2.ProgrammingError) relation "user" does not exist LINE 1: INSERT INTO "user" (user_name, email) VALUES ('as', 'sd') ^ [SQL: 'INSERT INTO "user" (user_name, email) VALUES (%(user_name)s, %(email)s)'] [parameters: {'email': 'sd', 'user_name': 'as'}]
.....正在使用多个模式 .....上面的 class 在名为 users
的模式中我认为问题是 table 名称解析:即在数据库中 table 'users' 在哪里?我假设必须使用 __tablename__ = 'users.user'
的模式名称来限定 table 'users'。这不起作用。
...产生的错误是:
sqlalchemy.exc.ProgrammingError: (psycopg2.ProgrammingError) relation "users.user" does not exist LINE 1: INSERT INTO "users.user" (user_name, email) VALUES ('po', 'p... ^ [SQL: 'INSERT INTO "users.user" (user_name, email) VALUES (%(user_name)s, %(email)s)'] [parameters: {'email': 'po', 'user_name': 'po'}]
我在 SqlAlchemy.org 网站或其他任何地方都找不到任何关于要使用的结构或如何解决这个问题的信息。
有什么想法吗?
您可以使用 schema
argument to Table
:
class User(db.Model):
...
__table_args__ = {
"schema": "users"
}