sqlalchemy 链接数据库,指定编码,解决密码含有特殊字符

文章目录

[隐藏]

  • 创建数据库连接
  • 获取元数据
  • 定义表
  • 创建数据表,如果数据表存在,则忽视
  • 创建链接
  • 增删改查
  • 关闭链接
# coding=utf-8  from urllib import quote_plus as urlquote  from sqlalchemy import create_engine, Table, Column, Integer, String, MetaData, ForeignKey  import MySQLdb  
创建数据库连接

用此方法链接可以指定UTF8编码,同时解决密码中含有特定字符,比如含有@,则把密码部分进行URL编码
echo=True 会显示每条执行的 SQL 语句
max_overflow 最大链接数

connstr = "mysql+mysqldb://root:%[email protected]:3306/dbname?charset=utf8" % urlquote('password')  engine = create_engine(connstr,echo=True,max_overflow=5)  
获取元数据
metadata = MetaData()  
定义表
user = Table('user', metadata,      Column('id', Integer, primary_key=True),      Column('name', String(20)),      )    color = Table('color', metadata,      Column('id', Integer, primary_key=True),      Column('name', String(20)),      )  
创建数据表,如果数据表存在,则忽视
metadata.create_all(engine)  
创建链接
conn = engine.connect()  
增删改查
#插入数据  engine.execute(      "INSERT INTO color( name) VALUES ('test');"  )  result = engine.execute('select * from color')      print(result.fetchall())    conn.execute(user.insert(),{'name':'test'})    sql = user.insert().values(name='test2')  conn.execute(sql)    #删除一条user表里的 条件是id大于1的  #sql = user.delete().where(user.c.id > 1)  #执行  #conn.execute(sql)    #更新  #把名字为test的修改为aaa  #sql = user.update().where(user.c.name == 'test').values(name='aaa')  #conn.execute(sql)    print "查询user表里的内容"  sql = select([user, ])  res =conn.execute(sql)  print res.fetchall()    print '查询user表下的id'  sql = select([user.c.id, ])  res =conn.execute(sql)  print res.fetchall()    print '查询user表和color表的name,条件是user表的id1=color的id1'  sql = select([user.c.name, color.c.name]).where(user.c.查询user表的name,并按照条件排序'  #按照名字排序  sql = select([user.c.name]).order_by(user.c.name)  res =conn.execute(sql)  print res.fetchall()    print '按照id排序'  sql = select([user.c.name]).order_by(user.c.id)  res =conn.execute(sql)  print res.fetchall()    print '查询user表的name,并按照条件分组'  sql = select([user]).group_by(user.c.name)  res =conn.execute(sql)  print res.fetchall()  
关闭链接
#关闭链接  conn.close()  

原文出处:csdn -> https://blog.csdn.net/baixue6269/article/details/77712395

本站所发布的一切资源仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如果侵犯你的利益,请发送邮箱到 [email protected],我们会很快的为您处理。