reading external sql script in python

后端 未结 3 1898
天涯浪人
天涯浪人 2020-11-28 21:47

I am working on a learning how to execute SQL in python (I know SQL, not Python).

I have an external sql file. It creates and inserts data into three tables \'Zooke

相关标签:
3条回答
  • 2020-11-28 22:16

    according me, it is not possible

    solution:

    1. import .sql file on mysql server

    2. after

      import mysql.connector
      import pandas as pd
      

      and then you use .sql file by convert to dataframe

    0 讨论(0)
  • 2020-11-28 22:35

    A very simple way to read an external script into an sqlite database in python is using executescript():

    import sqlite3
    
    conn = sqlite3.connect('csc455_HW3.db')
    
    with open('ZooDatabase.sql', 'r') as sql_file:
        conn.executescript(sql_file.read())
    
    conn.close()
    
    0 讨论(0)
  • 2020-11-28 22:36

    Your code already contains a beautiful way to execute all statements from a specified sql file

    # Open and read the file as a single buffer
    fd = open('ZooDatabase.sql', 'r')
    sqlFile = fd.read()
    fd.close()
    
    # all SQL commands (split on ';')
    sqlCommands = sqlFile.split(';')
    
    # Execute every command from the input file
    for command in sqlCommands:
        # This will skip and report errors
        # For example, if the tables do not yet exist, this will skip over
        # the DROP TABLE commands
        try:
            c.execute(command)
        except OperationalError, msg:
            print "Command skipped: ", msg
    

    Wrap this in a function and you can reuse it.

    def executeScriptsFromFile(filename):
        # Open and read the file as a single buffer
        fd = open(filename, 'r')
        sqlFile = fd.read()
        fd.close()
    
        # all SQL commands (split on ';')
        sqlCommands = sqlFile.split(';')
    
        # Execute every command from the input file
        for command in sqlCommands:
            # This will skip and report errors
            # For example, if the tables do not yet exist, this will skip over
            # the DROP TABLE commands
            try:
                c.execute(command)
            except OperationalError, msg:
                print "Command skipped: ", msg
    

    To use it

    executeScriptsFromFile('zookeeper.sql')
    

    You said you were confused by

    result = c.execute("SELECT * FROM %s;" % table);
    

    In Python, you can add stuff to a string by using something called string formatting.

    You have a string "Some string with %s" with %s, that's a placeholder for something else. To replace the placeholder, you add % ("what you want to replace it with") after your string

    ex:

    a = "Hi, my name is %s and I have a %s hat" % ("Azeirah", "cool")
    print(a)
    >>> Hi, my name is Azeirah and I have a Cool hat
    

    Bit of a childish example, but it should be clear.

    Now, what

    result = c.execute("SELECT * FROM %s;" % table);
    

    means, is it replaces %s with the value of the table variable.

    (created in)

    for table in ['ZooKeeper', 'Animal', 'Handles']:
    
    
    # for loop example
    
    for fruit in ["apple", "pear", "orange"]:
        print fruit
    >>> apple
    >>> pear
    >>> orange
    

    If you have any additional questions, poke me.

    0 讨论(0)
提交回复
热议问题