SQLite - Run multi-line SQL script from file?

后端 未结 4 720
盖世英雄少女心
盖世英雄少女心 2021-02-01 12:49

I have the following SQL in a file, user.sql:

CREATE TABLE user
(
  user_id INTEGER PRIMARY KEY,
  username varchar(255),
  password varchar(255)
);
4条回答
  •  谎友^
    谎友^ (楼主)
    2021-02-01 13:28

    Here is bernie's python example upgraded to handle exceptions in the script instead of silently failing (Windows 7, ActiveState Python 3.x)

    import sqlite3
    import os
    import os.path
    import ctypes
    
    databaseFile = '.\\SomeDB.db'
    sqlFile = '.\\SomeScripts.sql'
    
    # Delete the old table
    if os.path.isfile(databaseFile):
        os.remove(databaseFile)
    
    # Create the tables
    qry = open(sqlFile, 'r').read()
    sqlite3.complete_statement(qry)
    conn = sqlite3.connect(databaseFile)
    cursor = conn.cursor()
    try:
        cursor.executescript(qry)
    except Exception as e:
        MessageBoxW = ctypes.windll.user32.MessageBoxW
        errorMessage = databaseFile + ': ' + str(e)
        MessageBoxW(None, errorMessage, 'Error', 0)
        cursor.close()
        raise
    

提交回复
热议问题