Ben*_*ey4 4 python postgresql sqlalchemy
我在数据库中有预先存在的表,我想在其上使用自动映射模式。
但是,为了能够使用此模式,您需要按照文档中所示设置主键(我自己也尝试过;像这样失败了)。
sqlalchemy 有什么方法可以将主键设置为已经存在的id列吗?(理想情况下来自Users如下所示的对象)。
顺便说一句,我正在使用postgresql(与 sqlite 相比,它似乎不允许在创建表后设置主数据库)。
供参考
到目前为止,我已经能够成功访问数据,如下所示:
from sqlalchemy import Table, MetaData
from sqlalchemy.orm import sessionmaker
metadata = MetaData(engine)
Users = Table('users', metadata, autoload=True)
Session = sessionmaker(bind=engine)
session = Session()
user_q = session.query(Users).filter(Users.c.id==1)
Run Code Online (Sandbox Code Playgroud)
但这给了我一个列表,我需要在其中使用索引访问值。我想按给定行的属性(列)名称设置值,就像在 sqlalchemy 中通常所做的那样(例如通过语法user.first_name = "John")。
使用原始 DDL 语句。如果该列id已经是唯一的:
con = sqlalchemy.create_engine(url, client_encoding='utf8')
con.execute('alter table my_table add primary key(id)')
Run Code Online (Sandbox Code Playgroud)
如果id列不唯一,则必须删除它并重新创建:
con.execute('alter table my_table drop id')
con.execute('alter table my_table add id serial primary key')
Run Code Online (Sandbox Code Playgroud)
在 Postgres 中,以这种方式添加列将自动用后续行中的连续数字填充该列。
| 归档时间: |
|
| 查看次数: |
10586 次 |
| 最近记录: |