sql >> データベース >  >> RDS >> Mysql

クエリでのpythonmysqlエラー

    まず、ここで説明するように:有効なSQL列名を確認します

    これはPostGredocからのものですが、PostGreは「理想的な」SQL構文に非常に近いため、mysqlでも同じである可能性があります...したがって、列名に括弧やスペースはありません...

    次に、列名は文字列ではありません

    次の構文が有効です:

    CREATE TABLE (test VARCHAR(100) NOT NULL, ...)
    

    そして、次のものは無効であり、構文エラーをスローします:

    CREATE TABLE ('test' VARCHAR(100) NOT NULL, ...)
    

    '%s'修飾子を使用すると、データがSTRINGとして解析されます。そのため、引用符で囲みますが、これは無効です...

    したがって、テーブルを作成するには、(regexprを使用して)データを検証する「forループ」を提案し、それを文字列に単純に追加します。

    import re
    # ...
    query = "CREATE TABLE test (ID INT AUTO_INCREMENT,name VARCHAR(50)"
    for c in columnames:
            if (re.search(r"^[A-Za-z][A-Za-z0-9_]*$", c) query += c + ", FLOAT" #this regex validate string if  it begins with alphabetic char (upper or lower case), and if the others characters are alphanumeric, or are underscores
            else raise SyntaxError("Invalid Column name!!") #If not, we raise a syntax error
    query += ");"
    

    そして、テーブルを作成できます:)




    1. 可観測性のためのPostgreSQLの構成

    2. ユーザーに自分でフォークするように指示する

    3. SQL ServerでのDATEPART()の例

    4. SQLテーブル