1
我有问题。 我已经创建了这段代码来在sql server上创建一个具有标识的列,但是这个列不是主键。 在sqlalchemy这是很难,但我试着用这个代码,它的工作。创建列不是主键但在sqlalchemy上为sql服务器标识
def change_pk(table, sql_table_name, list_pk_column):
str_pk_column = ""
for item in list_pk_column:
str_pk_column += item + ","
str_pk_column = str_pk_column[:-1]
event.listen(table, 'after_create',
DDL("""ALTER TABLE {0} DROP CONSTRAINT {0}_id;
ALTER TABLE {0} ADD CONSTRAINT {0}_un_id UNIQUE (id);
ALTER TABLE {0} ADD CONSTRAINT {0}_pk PRIMARY KEY ({1})""".format(sql_table_name,str_pk_column)))
msg_users = sa.Table("Msg_Users",
metadata,
sa.Column("id",
sa.Integer,
info={}),
sa.Column("name",
sa.Unicode(50),
nullable=False,
info={}),
sa.Column("mobile",
sa.Unicode(15),
info={}),
sa.Column("email",
sa.Unicode(80),
info={}),
sa.Column("last_update",
sa.DateTime,
server_default=sa.func.current_timestamp(),
server_onupdate=sa.func.current_timestamp(),
info={}),
sa.PrimaryKeyConstraint('id', name="Msg_Users_id"),
info={},
autoload=aload)
change_pk(msg_users, "Msg_Users", ["name"])
你知道是否有一种方法更简单吗?
感谢的
我不跟着他们的问题,使用'sa.PrimaryKeyConstraint('id')'生成的主键有什么问题? –
可能有误解。我会尝试以更好的方式解释我的问题。我需要有“名称”作为主键和“ID”作为标识列(它不是主键)。问题是我不知道如何使用sqlalchemy来完成它。我试着把auto_increment放在“id”上,但它不起作用。 –