Python操作数据库的方式相对来说比较简单,在这里简单总结一下常用的方式。
1.首先看最“原始”的方式,下面这段代码来自与w3cschool,更多增删改查的例子请点击这里:
import MySQLdb # 打开数据库连接 db = MySQLdb.connect("localhost","testuser","test123","TESTDB" ) # 使用cursor()方法获取操作游标 cursor = db.cursor() # SQL 插入语句 sql = "INSERT INTO EMPLOYEE(FIRST_NAME, \ LAST_NAME, AGE, SEX, INCOME) \ VALUES ('%s', '%s', '%d', '%c', '%d' )" % \ ('Mac', 'Mohan', 20, 'M', 2000) try: # 执行sql语句 cursor.execute(sql) # 提交到数据库执行 db.commit() except: # Rollback in case there is any error db.rollback() finally: # 关闭数据库连接 db.close()
2. 使用with as方式,这样可以保证数据库的连接会在程序结束后自动关闭。
with MySQLdb.connect(host=hostAdr, user=userName, passwd=password,db=database) as conn: query = 'select column_name from information_schema.columns where table_name="%s"' % tableName conn.execute(query) results = conn.fetchall() return results
3.使用alchemy,这种方式应该是比较高大上的,也避免了SQL注入
mysql_db = create_engine('sqlite:///:memory:', pool_recycle=1900, pool_size=16, max_overflow=16,echo_pool=True) metadata = schema.MetaData(mysql_db) my_table = schema.Table('table', metadata, autoload=True) with mysql_db.connect() as connection: trans = connection.begin() try: create_time_string=datetime.datetime.now().strftime("%H:%M,%Y-%m-%d") ins = my_table.insert().values(user_id='one_of_list',tenant_id='hehe') connection.execute(ins) trans.commit() except: trans.rollback() raise