我们什么时候在SQLAlchemy中得到以下错误?
sqlalchemy.exc.OperationalError: (OperationalError) (1050, "Table 'foobar' already exists")
Run Code Online (Sandbox Code Playgroud)
该foobar表已存在,但为什么SQLAlchemy尝试在已存在时创建表.我假设它不应该创建表,如果已经存在.
我正在使用以下语法来创建表:
t = Table('foobar', metadata,
Column('col1', String(50), primary_key=True),
Column('col2', String(100)),
mysql_engine='InnoDB',
mysql_charset='utf8')
Run Code Online (Sandbox Code Playgroud)
(我正在并行调用同一个程序10次)
Rob*_*pta 18
只需使用模式对象(表,索引和序列) 创建和删除方法,使用checkfirst = True 关键字,表将自动添加"IF NOT EXISTS或IF EXISTS CLAUSE",适用于SQL.
例如:
t = Table('foobar', metadata,
Column('col1', String(50), primary_key=True),
Column('col2', String(100)),
mysql_engine='InnoDB',
mysql_charset='utf8')
t.create(checkfirst=True)
Run Code Online (Sandbox Code Playgroud)
如果 foobar 表已经存在,您可以这样做:
users = Table('foobar', metadata, autoload=True)
Run Code Online (Sandbox Code Playgroud)
SQLAlchemy 会自动从数据库中找出表的结构。
首先使用自动加载检查表是否存在,如果不存在则创建表。
| 归档时间: |
|
| 查看次数: |
15578 次 |
| 最近记录: |