发布网友 发布时间:2022-04-28 15:55
共4个回答
懂视网 时间:2022-05-02 17:18
安装pymysql:python3 -m pip install pymysql,查看安装后的版本python3 -m pip show pymysql.
安装pymssql:python3 -m pip install pymssql,查看安装后的版本python3 -m pip show pymssql.
由于缺少—mssql,参考解决办法http://blog.csdn.net/HHTNAN/article/details/77931782,我们用第二种解决办法.whl的下载地址为https://www.lfd.uci.edu/~gohlke/pythonlibs/#pymssql,装命令为python3 -m pip
install pymssql-2.1.3-cp36-cp36m-win32.whl.查看安装的版本python3 -m pip show pymssql.
数据库连接操作流程和函数介绍:
任何数据库无法避免的就是连接操作,这里mysql和sqlserver的连接传的参数略微有些不同,pymssql.connect(self.host,self.user,self.pwd,self.db,charset="utf8"),sqlserver传的是4个参数,host为ip加端口,用户名,密码,库名,字符编码;而mysql的pymysql.connect(host=self.host,port=self.port,user=self.user,passwd=self.pwd,db=self.db,charset="utf8")其它都一样,host为IP加上一个独立的端口传参。
查询语句,通过连接后返回的对象conn的cursor的方法创建游标对象cur,调用cur的execute的方法执行sql语句,用fetchone查询单条语句,fetchall查询多条数据。之后调用conn的close方法关闭连接。
非查询语句,通过连接后返回的对象conn的cursor的方法创建游标对象cur,调用cur的execute的方法执行sql语句,然后conn调用commit的方法去提交数据,然后调用close的方法关闭数据库连接。
创建数据库对象和测试例子:
#-*-coding:utf-8-*-s #mysql和sqlserver的库 import pymysql,pymssql class Database: def __init__(self,*db): if len(db)==5: #mysql数据库 self.host=db[0] self.port=db[1] self.user=db[2] self.pwd=db[3] self.db=db[4] else: #sqlserver数据库 self.host=db[0] self.port=None self.user=db[1] self.pwd=db[2] self.db=db[3] def _Getconnect(self): if not self.db: raise NameError+"没有设置数据库信息" if (self.port==None): self.conn=pymssql.connect(self.host,self.user,self.pwd,self.db,charset="utf8") else: self.conn = pymysql.connect(host=self.host,port=self.port,user=self.user,passwd=self.pwd,db=self.db,charset="utf8") cur=self.conn.cursor() if not cur: raise "数据库连接不上" else: return cur #查询sql def ExecQuery(self,sql): cur=self._Getconnect() cur.execute(sql) relist=cur.fetchall() self.conn.close() return relist #非查询的sql def ExecNoQuery(self,sql): cur=self._Getconnect() cur.execute(sql) self.conn.commit() self.conn.close()
测试代码:
#sqlserver数据库信息 SqlServerhost="192.168.100.85:12033" SqlServeruser="AKTEST" SqlServerpwd="btjf123!" SqlServerdb="AK_Data_jccs" #Mysql数据库信息 Mysqlhost="192.168.100.211" Mysqlport=3307 Mysqluser="akmysql" Mysqlpwd="mysql123" Mysqldb="bt_hyaline" database=Database(SqlServerhost,SqlServeruser,SqlServerpwd,SqlServerdb) #sqlserver查询 sql="select top 1 * from t_code order by fid desc" relist=database.ExecQuery(sql) print (relist) #sqlserver非查询 sql="update t_code set ftypes=1 where fid=83902" database.ExecNoQuery(sql) database=Database(Mysqlhost,Mysqlport,Mysqluser,Mysqlpwd,Mysqldb) #Mysql查询 sql="select * from t_Bank where fid = 2" relist=database.ExecQuery(sql) print (relist) #Mysql非查询 sql="update t_Bank set FShortName=2 where fid = 2" database.ExecNoQuery(sql)
python的数据库对象
标签:order line 字符 mysq code ldb list 解决 sql数据库
热心网友 时间:2022-05-02 14:26
肯定是共用一个连接。
这和你要连接的数据库相关,本地的可能是文件句柄,远程的可能是套接字,也可能是管道。
显然不是,看看下面的内容你应该理解了。
Python中的对象之间赋值时是按引用传递的,如果需要拷贝对象,需要使用标准库中的copy模块。
1. copy.copy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象。
2. copy.deepcopy 深拷贝 拷贝对象及其子对象
一个很好的例子:
import copy
a = [1, 2, 3, 4, ['a', 'b']] #原始对象
b = a #赋值,传对象的引用
c = copy.copy(a) #对象拷贝,浅拷贝
d = copy.deepcopy(a) #对象拷贝,深拷贝
a.append(5) #修改对象a
a[4].append('c') #修改对象a中的['a', 'b']数组对象
print 'a = ', a
print 'b = ', b
print 'c = ', c
print 'd = ', d
输出结果:
a = [1, 2, 3, 4, ['a', 'b', 'c'], 5]
b = [1, 2, 3, 4, ['a', 'b', 'c'], 5]
c = [1, 2, 3, 4, ['a', 'b', 'c']]
d = [1, 2, 3, 4, ['a', 'b']]
热心网友 时间:2022-05-02 15:44
如果con.close(),那么con_copy就不是的了。热心网友 时间:2022-05-02 17:19
python数据库连接对象和连接的关系